📜  在 2020 年编写干净更好的代码的 7 个技巧

📅  最后修改于: 2021-10-20 10:22:31             🧑  作者: Mango

软件工程不仅仅是学习一门语言和构建一些软件。作为软件工程师或软件开发人员,您应该编写好的软件。所以问题是什么才是好的软件?好的软件可以通过阅读项目中编写的一些代码来判断。如果代码易于理解易于更改,那么它绝对是一款优秀的软件,开发人员喜欢在此方面工作。

2020 年编写清洁和更好代码的 7 个提示

在开发中,没有人愿意继续使用可怕或凌乱的代码的项目是很常见的事情(有时这会变成一场噩梦……)。有时,由于截止日期的压力,开发人员会避免编写干净的代码。他们急于跑得更快,但实际上发生的事情是他们最终走得更慢。它会产生更多的错误,他们需要在返回同一段代码后修复这些错误。这个过程花费的时间比编写代码所花费的时间要多得多。一项研究表明,阅读代码与编写代码所花费的时间之比远远超过 10 比 1

阅读代码与编写代码的时间比率

不管你是初学者还是有经验的程序员,你都应该努力成为一名优秀的程序员(不仅仅是程序员……)。请记住,您要对代码的质量负责,因此要使您的程序足够好,以便其他开发人员可以理解,并且他们不会每次都嘲笑您以理解您在项目中编写的凌乱代码。

是什么造就了干净的代码:在我们讨论编写干净和更好的代码的艺术之前,让我们看看它的一些特征……

  1. 干净的代码应该是可读的。如果有人正在阅读您的代码,他们应该有阅读诗歌或散文的感觉。
  2. 干净的代码应该是优雅的。阅读应该令人愉悦,并且应该让您微笑。
  3. 干净的代码应该简单易懂。它应该遵循单一职责原则(SRP)
  4. 干净的代码应该易于理解易于更改易于维护
  5. 干净的代码应该运行所有的测试

如何编写干净更好的代码?

1. 使用有意义的名字

您将为变量、函数、类、参数、模块、包、目录和诸如此类的东西编写大量名称。养成在代码中使用有意义的名称的习惯。无论你在代码中提到什么名字,它都应该满足三个目的……它的作用它为什么存在以及它是如何使用的。例如:

int b; // number of users.

在上面的例子中,你需要在变量的名称声明中提到一个注释,这不是一个好的代码的特征。您在代码中指定的名称应显示其意图。它应该指定变量、函数或方法的用途。因此,对于上面的示例,更好的变量名称是:- int number_of_users 。选择有意义的名称可能需要一些时间,但它会使您的代码更清晰,更易于其他开发人员和您自己阅读。此外,尽量将名称限制在三四个字以内。

2.单一职责原则(SRP)

类、函数或方法是用任何编程语言组织代码的好方法,因此当您编写代码时,您确实需要注意如何编写一个传达其意图的函数。大多数初学者都犯了这个错误,他们编写了一个可以处理和完成几乎所有事情(执行多项任务)的函数。它使开发人员的代码更加混乱,并在他们需要修复某些错误或查找某些代码时产生问题。所以当你在写一个函数,你应该记住两件事,让你的函数简洁易懂……

  1. 它们应该很小。
  2. 他们应该只做一件事,而且应该把它做好。

以上两点明确提到你的函数应该遵循单一职责原则。这意味着它不应具有嵌套结构或不应具有超过两个缩进级别。遵循此技术可使您的代码更具可读性,并且如果您的函数完成特定任务,其他开发人员可以轻松理解或实现其他功能。
此外,请确保您的函数不应超过三个。更多的参数执行更多的任务,所以尽量减少参数。传递三个以上的参数会使您的代码变得混乱、庞大且难以调试(如果存在任何问题)。如果您的函数具有 try/catch/finally 语句,则创建一个仅包含 try-catch-finally 语句的单独函数。
还要注意您的函数名称。为你的函数使用一个描述性的名称,它应该清楚地说明它的作用。

例子:

function subtract(x, y) {
    return x - y;
}

在上面的例子中,函数名称清楚地表明它的目的是对两个数字进行减法,而且它只有两个参数。从链接 7 个开发人员必须遵循的通用编程原则和 SOLID 原则中阅读有关编写好的函数的更多信息。

3. 避免写不必要的评论

开发人员使用注释来指定代码中一行的用途是很常见的事情。的确,注释对于解释代码的作用非常有帮助,但它也需要对代码进行更多维护。在开发中,代码在这里和那里移动,但如果注释保持在同一个地方,那么它就会产生一个大问题。它会在开发人员之间造成混乱,并且他们也会因为无用的评论而分心。并不是说您根本不应该使用注释,有时这很重要,例如……如果您正在处理需要解释某些行为的第三方 API,您可以使用注释来解释您的代码,但不要编写不需要的地方评论。
今天,现代编程语言的语法就像英语一样,这足以解释代码中一行的用途。为避免在代码中添加注释,请为变量、函数或文件使用有意义的名称。

4. 为人们编写可读的代码

很多人尤其是初学者在编写代码时会犯错误,他们将所有内容都写在一行中,并且没有在代码中提供适当的空格、缩进或换行符。这使他们的代码变得混乱且难以维护。总是有可能另一个人会得到你的代码,他们将不得不使用它。当其他开发人员试图阅读和理解凌乱的代码时,会浪费他们的时间。因此,请始终注意代码的格式。当您在几天后返回到您自己的代码进行一些更改时,您还将节省您的时间和精力。因此,请确保您的代码应具有适当的缩进、空格和换行符,以使其对其他人可读。编码风格和格式会影响代码的可维护性。软件开发人员总是因为他/她在他/她的代码中遵循的编码风格而被记住。

// Bad Code
class CarouselRightArrow extends Component{render(){return (    );}};
  
// Good Code
class CarouselRightArrow extends Component {
  render() {
    return (
      
        
      
    );
  }
};

5. 编写单元测试

编写单元测试在开发中非常重要。它使您的代码干净、灵活和可维护。更改代码和减少错误变得更加容易。软件开发中有一个称为测试驱动开发 (TDD) 的过程,其中将需求转化为一些特定的测试用例,然后改进软件以通过新的测试。根据 Robert C. Martin(鲍勃叔叔)的说法,TDD 的三个定律证明了……

  1. 除非要使失败的单元测试通过,否则不允许编写任何生产代码。
  2. 不允许编写任何足以导致失败的单元测试,并且编译失败就是失败。
  3. 不允许编写任何足以通过一个失败的单元测试的生产代码。

测试软件开发

6. 小心依赖

在软件开发中,您确实需要小心您的依赖项。如果可能,您的依赖项应该始终是单一方向。这意味着……假设我们有一个厨房类,它依赖于洗碗机类。只要洗碗机不依赖于厨房类,这就是单向依赖。厨房课只是使用洗碗机,但洗碗机并不在乎,任何人都可以使用它。它不一定是厨房。这个单向依赖的例子更容易管理,但是不可能总是有单向依赖,但我们应该尝试尽可能多。当依赖向多个方向发展时,事情会变得更加复杂。在双向依赖中,两个实体相互依赖,因此即使它们是分开的,它们也必须一起存在。当某些系统的依赖关系不形成单一方向时,它们就很难更新。因此,在管理依赖项时要始终小心。

7. 让你的项目井井有条

这是软件开发中非常常见的问题,我们在项目中添加和删除了如此多的文件或目录,有时其他开发人员了解项目并进行处理会变得复杂和烦人。我们同意您无法在第一天设计一个完美的文件夹或文件组织,但稍后,当您的项目变得更大时,您确实需要小心文件夹、文件和目录的组织。一个结构良好的文件夹和文件使一切变得清晰,并且更容易理解一个完整的项目、搜索某个特定文件夹并在其中进行更改。因此,请确保您的目录或文件夹结构应有条理(同样适用于您的代码)。

了解如何编写干净和更好的代码的最佳书籍:

  • 干净的代码
  • 代码完成