《干净代码》第 12 章,标题为“出现”,探讨了如何通过遵守基本设计原则来出现干净、结构良好的软件。
软件设计中的涌现是指从简单、易于理解的规则中产生复杂行为或功能的过程。
遵循这些规则可以帮助开发人员制作易于维护、扩展和理解的软件。
本章重点介绍简单设计的四个规则,强调简洁性和可测试性,以实现干净高效的代码。
让我们分解这些规则,看看它们如何使用 JavaScript 应用。
干净、紧急的软件的基础是它必须具有功能性。
所有代码都应通过测试,确保保留预期行为并且新功能不会引入错误。
在 JavaScript 中,这通常是通过使用 Jest 或 Mocha 等库编写单元测试来实现的。
function add(a, b) { return a + b; } // Test (using Jest) test('adds 1 + 2 to equal 3', () => { expect(add(1, 2)).toBe(3); });
通过确保软件通过所有测试,您就可以保证系统按预期工作。
干净的代码始于可靠的测试。没有这个,其他规则都不重要。
代码应该传达它的作用。命名良好的函数、变量和类可以使您的代码易于阅读和理解,而无需注释。
揭示其意图的代码是不言自明的。
错误命名:
function d(x) { return x * 2; }
好名字:
function doubleNumber(number) { return number * 2; }
在这种情况下,doubleNumber() 清楚地揭示了该函数的意图。
任何阅读此代码的人都可以立即理解其目的,无需额外解释。
这种做法不仅可以减少混乱,还可以提高可维护性。
代码重复是干净软件最大的敌人之一。重复的逻辑可能会导致错误并增加维护工作量。
目标是通过将常见行为抽象为可重用的函数或模块来减少冗余。
代码重复:
function calculateAreaOfSquare(side) { return side * side; } function calculateAreaOfRectangle(length, width) { return length * width; }
两个函数都在进行类似的计算。通过重构,我们可以消除重复。
无重复:
function calculateArea(shape) { if (shape.type === 'square') { return shape.side * shape.side; } else if (shape.type === 'rectangle') { return shape.length * shape.width; } }
通过函数的泛化,我们消除了重复的逻辑,使代码更易于维护。
简单设计的最后一条规则鼓励在不牺牲清晰度的情况下最大限度地减少类和方法的数量。
这意味着避免不必要的复杂性。
每个类或函数都应有明确且集中的职责,遵守单一职责原则 (SRP)。
方法太多:
class User { constructor(name) { this.name = name; } getName() { return this.name; } setName(name) { this.name = name; } printWelcomeMessage() { console.log(`Welcome, ${this.name}!`); } // Additional unrelated methods getUserProfile() { // ... some logic } logActivity() { // ... some logic } }
这个类的职责太多了。它应该只专注于管理用户名。
重构:
class User { constructor(name) { this.name = name; } getName() { return this.name; } setName(name) { this.name = name; } } class Logger { static logActivity(user) { // ... some logic console.log(`${user.getName()} performed an activity.`); } }
通过分离关注点,代码变得更简单且更易于维护。
现在,每个类都有单一的职责,秉承极简主义和简单的原则。
简单设计的四个规则——通过所有测试、揭示意图、消除重复以及最小化类和方法的数量——指导创建干净、可维护和紧急的代码。
通过遵循这些原则,可以控制复杂性,并且您的代码将变得更能适应变化。
快乐编码!
以上是理解干净的代码:出现⚡️的详细内容。更多信息请关注PHP中文网其他相关文章!