良好编程风格的养成

编程风格不仅仅是关乎代码质量更是一种艺术修养
服务器君一共花费了160.993 ms进行了4次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

编程风格不仅仅是关乎代码质量问题,更是一种艺术修养问题,糟糕的不良的丑陋的编程风使代码维护变得困难,而且无形中也增加了产生bug的频率。

什么样的编程风格才是优秀的?

  • 养成一种良好的编程风格并长久坚持之。不管是平时代码练习,还是实际参与项目开发,都应该按那种编程风格编码,千万记住,好的编程风格不仅让你受益终身,更需要你坚持不懈。
  • 注释恰到好处。为每个函数编写前置条件和后置条件,前置条件说明调用此函数时候需要满足的条件,各个参数的取值范围;后置条件说明当前置条件成立时调用该函数产生的结果,也就是这个函数完成什么任务、有什么功能。为每个类写注释,说明这个类有多少个变量,多少个函数,完成什么任务,如果成员函数中有用到自由内存分配(new和delete),那么你注释应该准确的反应这些事实,以让有经验的程序员维护你的代码时能更方便。为每个类的私有成员写注释,为每个全局变量写注释,为每个不那么容易读懂的变量和算法写注释。
  • 变量命名要合理,尽量不要用拼音,尽量用英文,如果不懂英文请上Google。推荐用微软的匈牙利命名法,如果觉得麻烦,可以对其进行变式。整形变量前面加n,指针变量前加p,等等。用 GetFileName而不是getfilename,或者get_file_name,当然,这都只是建议,更具体的匈牙利命名法。
  • 权衡可读性和效率,比如,在效率要求不高的地方,尽量用可读性高的代码,for example,判断int型的变量a是否为偶数,可用if(a%2==0)或者if(!(a%2)),if(a&1)这些代码中,显然第一个可读性最好,第三个效率最高,在实际编程中采用哪个,各位自己权衡吧。
  • 尽量用括号,除非你对C中的的运算符的优先级非常熟悉,否则还是多打几个括号比较好,比如cout<<1&+!5^6;这个输出什么?在展示你的智商时,我希望你多花时间在提高代码的可维护性和低bug产生率上。
  • 如果if语句里面只有一条语句,也请加上{},这对于提高可读性有帮助的。真的。你试试?

匈牙利命名法

匈牙利命名法计算机程序设计中的一种命名规则,用这种方法命名的变量显示了其数据类型。匈牙利命名法有两种:系统匈牙利命名法和匈牙利应用命名法。

匈牙利命名法被设计成语言独立的,并且首次在BCPL语言中被大量使用。由于BCPL只有机器字这一种数据类型,因此这种语言本身无法帮助程序员来记住变量的类型。匈牙利命名法通过明确每个变量的数据类型来解决这个问题。

在匈牙利命名法中,一个变量名由一个或多个小写字母开始,这些字母有助于记忆变量的类型和用处,紧跟着的就是程序员选择的任何名称。这个后半部分的首字母可以大写以区别前面的类型指示字母。

系统命名法与应用命名法的区别在于前缀的目的。

在系统匈牙利命名法中,前缀代表了变量的实际数据类型。例如:

  • lAccountNum :变量是一个长整型("l");
  • arru8NumberList :变量是一个无符号8位整型数组("arru8");
  • szName :变量是一个零结束字符串("sz"),这是西蒙尼最开始建议的前缀之一。

匈牙利应用命名法不表示实际数据类型,而是给出了变量目的的提示,或者说它代表了什么。

  • rwPosition :变量代表一个行("rw")。
  • usName :变量代表一个非安全字符串("us"),需要在使用前处理。
  • strName :变量代表一个包含名字的字符串("str")但是没有指明这个字符串是如何实现的。

系统匈牙利命名法的优点

  • 从名字中就可以看出变量的类型
  • 拥有类似语义的多个变量可以在一个代码块中使用:dwWidth, iWidth, fWidth, dWidth
  • 变量名在仅仅知道他们的类型时可以被轻易记住
  • 可以使变量名更加一致
  • 决定一个变量名的时候可以更机械化,更快
  • 不合适的类型转换和操作可以在阅读代码的时候被检测出来
  • 在那些数字被当作字符串处理的基于字符串的语言中非常有用(例如Tcl)
  • 在匈牙利应用命名法中,变量名确保不会犯以下错误:heightWindow = window.getWidth()
  • 在使用动态类型语言或完全无类型的语言编程时,关于类型的修饰可以更简化。这种语言一般不包含类型修饰(或者可选),因此唯一可以看出哪些类型是被允许的只有名字本身、文档以及通过阅读代码来明白它们在做什么。在这些语言中,包含对于变量类型的指示可能会有助于程序员。就像上面提到的,匈牙利命名法扩展了这样的语言(BCPL)。
  • 在包含许多全局对象的复杂程序中(VB/Delphi Forms),拥有一个基本的前缀命名法可以简化在编辑器中查找组件的工作。按btn可以使编辑器弹出一个Button对象的列表。

本文地址:http://www.nowamagic.net/librarys/veda/detail/581,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/581

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《代码之美》 聂雪军 (译者)

《代码之美》介绍了人类在一个奋斗领域中的创造性和灵活性:计算机系统的开发领域。在每章中的漂亮代码都是来自独特解决方案的发现,而这种发现是来源于作者超越既定边界的远见卓识,并且识别出被多数人忽视的需求以及找出令人叹为观止的问题解决方案。《代码之美》33章,有38位作者,每位作者贡献一章。每位作者都将自己心目中对于“美丽的代码”的认识浓缩在一章当中,张力十足。38位大牛,每个人对代码之美都有自己独特的认识,现在一览无余的放在一起,对于热爱程序的每个人都不啻一场盛宴。 虽然《代码之美》的涉猎范围很广,但也只能代表一小部分在这个软件开发这个最令人兴奋领域所发生的事情。

更多计算机宝库...