技术开发 频道

编程大牛的哪个习惯,值得你学习!

  【IT168 评论】作为一名开发者,无论我们刚处于起步阶段还是已经工作多年,我们总是应该努力提高我们的编程技能。我们需要不断尝试新的工具,语言和技术,不断充实我们的技能包。除了我们知道的这些技术、编程语言之外,我们还可以做什么呢?

迈出一小步,成为一名更优秀的开发者

  要想成为一个优秀的开发人员,成为编程界的大牛,真正重要的事情其实是写出干净整洁的代码。程序员对于需求、解决方案的表达都是通过代码实现的。在程序员界有一个很流行的段子,大体意思是三个月后,程序员再看自己编写的代码根本不记得是自己写的了。写代码很重要,需要不断添加或修改功能并调试,这就需要有一段干净和易于理解的代码。编写的代码要具备易读,可理解和可维护性,这不仅仅是编程技能有没有点满的问题,还需要经验和热情。如果我们想要做的更好,可以寻找一些提高我们写作技能的方法。

  良好的程序是一个连续的过程。带有注释和记录的代码,利于编程工作的连续。很多程序员可能会说自己很忙,天天加班,哪有时间保证代码整洁,其实,一份整洁的代码很利于日后的功能延展或调试。

  Robert C. Martin曾在他的书《Clean Code:A Handbook of Agile Software Craftsmanship》中提到如何写一段干净的代码。编写干净的代码意味着需要考虑程序的不同维度,如命名约定,注释,错误处理,函数和对象,以及数据结构。

  有意义的命名

  一个好的名字可以提供大量信息,并增加程序的清晰度。类,变量和函数都涉及命名,开发人员必须选择有意义的名称来显示代码的预期目的。考虑以下几点有助于起一个有意义的名称:

  1、使用显示意图的名称

  将名称提供给暴露其用法的类,成员变量,函数和局部变量,以改进可读性,可理解性和可维护性。将用途包含在命名中,比如useby某类名。

  2、做有意义的区分避免同质化

  开发人员必须经常在相同范围或类型的变量中编写类似的对象。在这种情况下,选择一个好名字对于明确区分各对象或类的作用很重要。例如,不使用obj1和obj2这种没有太大意义的名字,优选适当的命名,描述它们在该范围内的作用。

  3、使用发音简单的名称

  你如何声明各种类型的变量? 它可以是对象,类等。你能记住你在程序中定义的类的名称吗? 在一个小程序或项目中,很容易就可以记住, 但随着程序变大,很难记住我们定义的所有类,变量和函数。使用发音好记,并与使用场景相结合的名称有助于提高可读性和可理解性,使其易于在其使用场景范围内记住。

  4、使用易搜索的名称

  使用易搜索的名称意味着避免诸如file1,file2,var1等通用名称。这些术语难以搜索,因为它们可以在任何地方使用,并且很难从名字看出它们的使用范围。使用高级IDE,搜索会变得容易,但仍然会消耗大量时间。如果我们遵循上面列出的所有要点,就很容易实现一个易搜索的名称。使用易搜索的名称可以轻松找到想要的对象或类,会产生较少的搜索结果,具有更高的精度和更少的时间。

  5、减少类型定义

  我们经常用int等来声明变量的类型。在变量名称之前添加这类编码不会添加有用信息的数量反而会降低其可读性。

  6、拒绝花哨

  避免使用花哨的名字,没人对这个感兴趣。

  注释

  代码中的注释在理解代码上起着至关重要的作用。我们经常被告知在程序上写注释,并添加几句评论,问题在于评论是否在任何地方都是必要的,答案其实是否定的。

  1、法律问题

  如果不写评论或注解涉及到法律问题,例如版权,这时评论是必要的。

  2、信息性评论

  如果,你认为这些评论对其他人的阅读很有价值,那么应该留下几句评论,比如一些新出的或正在实现的算法,可以写几句试用心得。

  3、意向和澄清类的解释

  在某些情况下,我们做的某些事情不是出自本意,但用例需要它。在这种情况下,写几句注释来解释自己的意图是好的。这将有助于其他人理解为什么这件事情以这样的方式完成。

  4、警告后果

  对我们实现好的功能,如果存在某种做法或者某些场景会对代码造成干扰,或引起其他异常行为。这时,应该放做出相应的告知。

  函数

  程序员对自己编写的代码一定是要负责任的,对于功能上的问题如大概需要多长时间 、使用单个函数来提供不同的功能是否合适等,对开发人员来说非常重要。单个函数的代码如果非常长,会增加复杂性,并且难以调试和维护。因此,函数应具有以下属性:

  1、相对较小

  函数应尽可能小,以便于调试,理解和修改。有些人根据行数来定义函数,有人认为函数的细节应该在屏幕上完全可见,这取决于开发人员的意愿。但函数应尽可能相对较小,以便其他函数可以轻松地读取,调试和修改。

  2、没有副作用

  如果我们希望我们的函数易于维护和理解,那么它应该由单一事件驱动,这意味着一个函数应该只执行一件事情。同时,单一事件意味着减少副作用。如果一个函数是在另一个函数的参与下实现了预期目的,那么它是不合格的。这样的函数就会造成明显的副作用。例如,电子商务应用程序,使用登录功能来认证和初始化购物车就不是一个好主意。它可能会在某些时候引入一些不想要的行为,最好是使用两个功能分别验证和初始化购物车。所以,一个函数应该只负责一件事情。

  3、抽象

  函数通过其名称显示其用途,并隐藏所有细节。函数隐藏它负责的细节,这意味着它只提供抽象级别的意义。在上一个电子商务示例中,登录功能提供两个级别的抽象:一个用于认证,而另一个用于购物车的初始化。

  错误处理

  没有软件是100%无错误的。因此,错误处理是开发应用程序中非常重要的一部分。我们可能不知道何时会发生错误,但我们需要在开发应用程序时准备好错误处理预案。错误应妥善处理,否则,一个错误就可能会造成一系列不好的连锁反应。为了更好的应对错误处理和保证程序安全,以下准则是有帮助的。

  1、首选不是返回错误代码

  遇到错误的时候,首要原则不是返回错误代码,而是返回0,-1或ERR等,为每个可能的异常定义一个名字,有助于我们理解错误的发生(例如,如果我们遇到“文件未找到”错误,我们返回0而不是FileNotFoundException)。返回代码会很冗长,难以理解。在这种情况下,如果我们使用异常编码,会更容易识别错误的发生类型。

  2、提供异常的上下文

  每当发生异常时,最好是为其提供上下文。这可为调试提供大量信息,提供上下文使其更有意义。例如,我们正在从数据库表中查询记录,我们需要在“未找到记录”上抛出异常。在这种情况下,仅抛出异常不会提供任何有意义的信息。如果我们传递一个“记录未找到”消息与异常上下文,那么它将更有意义。许多情况下我们可能会使用相同类型的异常,上下文使这些异常可以彼此分开。

  3、不返回和传递NULL值

  传递和返回NULL值会导致很多问题。这种情况的发生很不确定,一旦出现,任何接受和返回NULL值的函数都会处于异常状态。为了防止任何不确定性,请始终在调用函数之前验证参数,保证函数始终有返回值。如果不存在返回值,则使用上下文抛出异常,但不返回NULL。

  希望以上这些准则对你编写一份干净的代码有作用,自己编的代码代表了自己的个性或做事风格,从现在开始,为自己定一个小目标,从编写整洁清楚的代码做起。

0
相关文章