介绍
在软件开发中,编写“干净代码”对于创建易于理解,维护和修改的高质量应用程序至关重要。干净代码的主要原理之一是使用小型和集中的功能。
什么是小型和专注的功能?
小而专注的功能是专注于单个任务并且尽可能短的功能。与其具有执行多个任务的单个长函数,不如将函数分为几个较小的函数,每个函数都处理特定的任务。
例如,最好将函数分为几个较小且重点的功能,而不是验证用户注册表格的长函数,例如检查字段是否完成,另一个可以验证电子邮件地址,另一个检查密码安全性。
为什么小型且集中的功能很重要?
小且专注的功能很重要,原因有几个:
-
他们提高了代码可读性:较小的功能更易于阅读和理解,从而使代码更易于维护和修改。此外,更专注于单个任务,更容易理解每个函数的作用。
-
它们减少了错误的数量:如果函数有错误,则更容易找到并更正函数,如果函数更小且更加集中。此外,专注于单个任务,在实现函数时犯错的可能性较小。
-
它们促进了代码维护和修改:较小的功能更容易维护和修改,减少进行更改和更正所需的时间和精力。
如何在代码中实施小型和专注的功能?
要在代码中实施小规模且重点的功能,遵循一些关键的软件设计原则很重要,例如单一责任原则和关注点分离的原则。
单一责任的原则指出,每个模块或班级应具有单一的责任。在函数的背景下,这意味着每个功能都应该做一件事并做得好。
分离关注点的原则指出,系统中的不同关注应分为不同的模块或类别。在函数的背景下,这意味着应将不同的任务分为不同的功能。
通过遵循这些原则,我们可以创建易于理解,维护和修改的小型且集中的功能。
代码示例
用户注册表格验证
说明如何在代码中实现小型和专注的功能,请考虑以下示例验证用户注册表格的函数:
//🚫 WRONG
public boolean validateForm() {
// Check that fields are complete
// Validate email address
// Check password security
if (fieldsComplete && validEmail && securePassword) {
return true;
} else {
return false;
}
}
在此示例中,validateForm
函数执行三个不同的任务:检查字段是否完成,验证电子邮件地址并检查密码安全性。为了使此功能更小,更专注,建议将其分为三个较小且专注的功能,每个功能执行特定的任务:
// RIGTH
public boolean validateForm() {
if (fieldsComplete() && validEmail() && securePassword()) {
return true;
} else {
return false;
}
}
public boolean fieldsComplete() {
// Check that fields are complete
}
public boolean validEmail() {
// Validate email address
}
public boolean securePassword() {
// Check password security
}
在此示例中,validateForm
函数调用了三个较小,更集中的功能:fieldsComplete
,validEmail
和securePassword
。这些功能中的每一个都执行特定的任务,并返回布尔值,指示该任务是否完成。
计算在线购买的总价格
如何在代码中实施小规模和专注的功能的另一个示例是计算在线购买的总价格。考虑以下函数的示例,该函数计算在线购买的总价格:
//🚫 WRONG
public double calculateTotalPrice() {
double totalPrice = 0.0;
// Calculate the price of each item
// Apply discounts to the total price
// Calculate tax on the total price
return totalPrice;
}
在此示例中,calculateTotalPrice
功能执行三个不同的任务:计算每个项目的价格,将折扣应用于总价,并计算总价税。为了使此功能更小,更专注,建议将其分为三个较小且更为集中的功能,每个功能执行特定任务:
// RIGTH
public double calculateTotalPrice() {
double totalPrice = 0.0;
totalPrice += calculateItemPrice();
totalPrice -= applyDiscounts();
totalPrice += calculateTax();
return totalPrice;
}
public double calculateItemPrice() {
// Calculate the price of each item
}
public double applyDiscounts() {
// Apply discounts to the total price
}
public double calculateTax() {
// Calculate tax on the total price
}
在此示例中,calculateTotalPrice
函数调用了三个较小,更集中的功能:calculateItemPrice
,applyDiscounts
和calculateTax
。这些功能中的每一个都执行特定的任务,并返回用于计算购买总价的数值。
结论
小型和专注的功能是软件开发中的强大工具。通过将长函数分为几个较小且更为集中的功能,我们可以提高代码可读性,减少错误数量并促进代码维护和修改。此外,遵循关键软件设计原则很重要,以有效地实施代码中的小而专注的功能。