.net代码的可读性和可维护性

12 .net c#

目前有一个关于哪个代码更易读的局部争论

我们有一个程序员来自ac背景,当程序员编码时看起来像

string foo = "bar";

if (foo[foo.Length - 1] == 'r')
{

}
Run Code Online (Sandbox Code Playgroud)

我们有另一个程序员不喜欢这种方法而宁愿使用

if (foo.EndsWith("r"))
{

}
Run Code Online (Sandbox Code Playgroud)

这种类型的操作哪种方式更好?

C.E*_*uis 38

对于从未见过C或C++,C#或任何其他编程语言的人来说,EndsWidth更具可读性.

  • 没错,但为什么从未见过C,C++,C#,Objective-C,Java,Perl,PHP或任何其他C衍生物的人会试图破译你的代码?请记住,这些天用Python或VB编写代码的人在某些时候会看到其中一种语言. (4认同)
  • +1因为这不是C,我甚至喜欢C. (4认同)

And*_*are 12

第二个是风格更具说明性,但我不能客观地告诉你它是否更具可读性,正弦可读性非常主观.我个人发现第二个更易读,但这只是我的看法.

以下是我文章的摘录:

大多数C#开发人员都非常熟悉编写命令式代码(即使他们可能不知道它的名字).在本文中,我将向您介绍一种称为声明性编程的替代编程风格.正确的声明性代码更易于阅读,理解和维护.

作为专业人士,我们应该努力每天编写更好的代码.如果你不能看看你三个月前用批判性的眼睛写的代码,并注意到可能更好的事情,那么你没有改进,也没有挑战自己.我要求您使用声明性代码编写更易于阅读和理解的代码.


小智 9

2号更好阅读和保持.示例:验证最后2个字符...

选项1)

if (foo[foo.Length - 1] == 'r' && foo[foo.Length - 2] == 'a')
{

}
Run Code Online (Sandbox Code Playgroud)

选项2)

if (foo.EndsWith("ar"))
{

}
Run Code Online (Sandbox Code Playgroud)

最后3?最后4?...


37S*_*ars 8

我来自C/C++背景,我投票支持Endswith!


Chu*_*way 7

可读性规则,特别是如果它意味着意图.

在第一个例子中,我必须发现意图 - 留待解释.如果它似乎有错误,我怎么知道这不是故意的?

第二个例子告诉我意图.我们想找到最终角色.有了这些知识,我就可以继续评估实施.