Function 此示例的更好实践:使用函数分解代码或使用注释

Function 此示例的更好实践:使用函数分解代码或使用注释,function,coding-style,comments,Function,Coding Style,Comments,有时我会纠结于是应该把代码放在一个更大的块中,还是应该把它们分解成函数。函数可以使它更清晰,因为它分隔了代码,但我觉得有时通过使用注释,清晰度是相同的。我下面的代码是一个C代码,我正在初始化控件 在这里,我可以让它是一个块,也可以把它分成函数。您喜欢这三种类型中的哪一种?为什么?如果代码的每个部分/类别(启用控件、初始标签值、控件属性)都大得多,您的答案会改变吗?也许每个5-15行?让我们假设Initialize()中的代码除了通过函数Initialize()之外不会被重用很多。任何其他批评都是

有时我会纠结于是应该把代码放在一个更大的块中,还是应该把它们分解成函数。函数可以使它更清晰,因为它分隔了代码,但我觉得有时通过使用注释,清晰度是相同的。我下面的代码是一个C代码,我正在初始化控件

在这里,我可以让它是一个块,也可以把它分成函数。您喜欢这三种类型中的哪一种?为什么?如果代码的每个部分/类别(启用控件、初始标签值、控件属性)都大得多,您的答案会改变吗?也许每个5-15行?让我们假设
Initialize()
中的代码除了通过函数
Initialize()
之外不会被重用很多。任何其他批评都是受欢迎的。谢谢

protectedvoid Initialize()
{
对于(int i=0;i
或:

protectedvoid Initialize()
{      
对于(int i=0;i
或:

private void EnableControls()
{
对于(int i=0;i

其他函数是相同的,因此循环为3。

注释是有害的。引用R.Martin的话:“评论是你的失败”。如果您需要编写注释,这意味着您无法以可读的方式编写代码,并且需要一些额外的解释

评论不好的原因:

  • 它们是用自然语言编写的,本质上不如代码那么精确,而且通常模棱两可(特别是在多语言团队中,或者在不同级别的非母语人士中)

  • 它们变得过时了。很少有人能快速修复一个bug,同时修复评论。而且也没有办法证实这一点

  • 它们是噪声-额外的字符,会分散您阅读实际代码的注意力

  • 它们为应用程序的代码带来了另一种自由度。即使您在设计注释策略、建立注释格式以及引入关于何时何地放置注释的精确规则方面浪费了大量时间,但不同开发人员的注释规则也会有所不同。第一点中提到了一个可能的原因,另一个原因是很难为自然语言编写精确的规则,这本身就是不精确的。注释标准的精确定义需要大量的规则和指南,并且给开发人员带来了巨大的负担

有时候用可读的方式写东西真的很难。有时候事情本身就是复杂的,即使是实现它们的最简单的代码也不容易理解。有时您需要编写一些不明显的hack来满足第三方库的一些奇怪要求。然后你写一条评论,知道这是沟通失败,但没有其他方法

这种罕见的注释将有其价值——如果有人阅读一段干净易读的代码而没有一条注释,并且突然发现一条注释,那么他们就会知道这肯定是一件重要的事情,需要他们的注意,在这里他们需要谨慎

当有很多评论的时候,它们只是被忽略了,你就没有机会告诉别人一些真正重要的事情——你的评论会在其他评论的海洋中消失


代码的第二个版本和第三个版本之间的差异毫无意义。如果这些版本中没有一个在代码复制方面更好,那么在我看来,使用哪个版本无关紧要。例如,您可以使用
InitializeLabelValues
而不是
Initialize

注释是有害的。引用R.Martin的话:“评论是你的失败”。如果您需要编写注释,这意味着您无法以可读的方式编写代码,并且需要一些额外的解释

评论不好的原因:

  • 它们是用自然语言编写的,本质上不如代码那么精确,而且通常模棱两可(特别是在多语言团队中,或者在不同级别的非母语人士中)

  • 它们变得过时了。很少有人能快速修复一个bug,同时修复评论。而且也没有办法证实这一点

  • 它们是噪声-额外的字符,会分散您阅读实际代码的注意力

  • 它们为应用程序的代码带来了另一种自由度。即使您在设计注释策略、建立注释格式以及引入关于何时何地放置注释的精确规则方面浪费了大量时间,但不同开发人员的注释规则也会有所不同。第一点中提到了一个可能的原因,另一个原因是很难为自然语言编写精确的规则,这本身就是不精确的。注释标准的精确定义需要大量的规则和指南,并且给开发人员带来了巨大的负担

有时候用可读的方式写东西真的很难。有时候事情本身就是复杂的,即使是实现它们的最简单的代码也不容易理解。有时候你需要