阅读更多

11顶
10踩

编程语言

原创新闻 15个编程好习惯

2011-03-23 16:48 by 见习编辑 jobbole 评论(18) 有16549人浏览

  编者按:这是国外程序员Al katib总结的一些编程习惯。

  1. 动手编码之前,你需要对要编码实现的解决方案有一个正式的或粗略的设计。永远不要在没有任何设计的前提下就开始编码,除非所编代码不重要。

  2. 优秀的代码文档跟编程语言知识一样重要。在代码源文件中,为每个主要的代码段添加注释,解释代码的基本逻辑。最好注明程序的构建和修改日期,以及修改的原因也是非常有必要的。

  3. 维护程序的各个版本同样重要。当前有些编程工具都自带一个版本管理工具。无论你什么时候改变自己的程序,它们都会将其保存为.bak文件。

  我的方法是为每个程序维护三个不同的版本。比如说,我有一个名为program.c的文件,这个文件同时也被其他项目组成员使用。我把这个文件复制为 program.c.old作为备份文件,并且当我修改时,我会备份另一个名为program.c.wrk的副本文件。当成功完成修改时替换 program.c.wrk文件。

  你还可以给自己的程序版本添加一个日期或一些注释,像program260505.c或programReadFnWrking.c。

  4. 如果工程包含多个源文件,则声称一个README文件,注明每个源文件、数据文件、临时文件以及日志文件(如果有的话)的作用。你还可以注明编译和运行步骤。

  5. 有时候,你一定想知道为什么IF语句没有得到预想的结果。可能你使用的是等号,也就是“=”,而不是条件判定符号“==”。一个比较好的办法是用相反的顺序写条件语句。因此,你的条件语句应该如下:

  if(10==i)…因此,如果你错误地写成了单个等于号,在编译的时候也能检查出来并报错。

  6.使用循环和条件语句时,先把左右括号对应起来,然后再在里面写其他语句。也就是:

代码:
1 for(int i=0;i<10;i++)

2 {

4 printf(“i=%dn”,i);

3 }

  注:每一行开头的数字表明写循环代码的顺序。

  7. 避免使用幻数(magic numbers)。例如,不要写

代码:
circleArea = 3.14 * pow(radius,2);

而要使用如下代码:

代码:
#define PI 3.14

circleArea = PI * pow(radius,2);

  
  8. 使用有意义的变量和函数名称。例如,使用‘radius’来代替圆的半径,而不是用‘r’来表示。同样,函数名‘calculateArea’要比其他任 何隐晦的缩写要好得多。匆忙之下,我们也许会使用缩写的变量名,但一开始节省时间的话,之后会浪费更多的时间,去猜测缩写变量名代表什么。(编注:)

  9. 为后面的调试使用打印语句,这是个好习惯。但是,当完成最后代码后,去掉这些语句,有时也是一项危险的任务。添加一个方法,用于输出调试信息。当最终版本生成时,只要把这个方法注释掉就行。因此,只在一个地方做修改就可以了。

  10. 代码编写完之后,开始优化代码。之前声明的一些变量,现在可能没用了。同样,并不依赖循环的一些声明可以移到循环模块之外去。扎实的编译知识同样会对以后的代码优化有所帮助。

  11. 对自己的操作系统和硬件要有足够的了解,你可以从资源占用等方面提升程序的性能。

  12. 编写代码时要合理使用缩进,以使代码清晰可读。

  13. 把项目文件放到SOURCE、HEADERS、MAKE、EXES等不同的文件夹中。

  14. 研究别人编写的代码。这可以让你学习到新的编程技术,以及他们解决和你相同的任务时所使用的方法。

  15. 最后一条(但不是最不重要的一条),备份源代码文件,这样当硬盘出错或相同的问题发生时,不至于前功尽弃。

  附加:补充一条,坚持使用一种命名模式。如果你打算用匈牙利命名法,那就坚持并广泛使用,否则将适得其反。参见微软资深工程师 Eric Lippert 的这篇文章《阅读代码不简单》。


  编者后话

  编程的好习惯应不止这15条,也许您不认同上文中的某些观点,请标出相应序号,并说明其不足之处。另外,非常欢迎大家补充分享您的好习惯。




  译文出处:伯乐在线 - 职场博客
  译文链接:http://www.jobbole.com/entry.php/581

  原文作者:Al katib   文章推荐:关关  翻译:伯乐在线 敏捷翻译组 - 朱勇

来自: www.jobbole.com
11
10
评论 共 18 条 请登录后发表评论
18 楼 monica617 2011-03-25 10:54
个人同意多看别人的代码,尤其是优质的代码能提高自己的编码水平
17 楼 liuzhiqiangruc 2011-03-25 09:29
针对某个功能,先把框架搭出来,每个分支可以只打印一个简单的语句,表明程序能够很好地覆盖所需要覆盖的逻辑,然后再每个分支中编写对应的逻辑,最后在各分支中用到的共用的变量等信息提取到程序的开始或结尾,保持程序的整洁。
16 楼 Puras 2011-03-25 09:02
风花雪月饼 写道
这玩意也上新闻了?

JE上向来如此,哈。
15 楼 jianson_wu 2011-03-25 08:44
嗯嗯,值得学习
14 楼 shengt1 2011-03-24 16:41
学会总结归纳
13 楼 hantsy 2011-03-24 16:04
第一点重要,
程序员就是用程序来表达自己的思想,如果事先不经过思考出来的程序,可想而知。
12 楼 风花雪月饼 2011-03-24 15:29
这玩意也上新闻了?
11 楼 yizhilong28 2011-03-24 12:44
damoqiongqiu 写道
陈词滥调,

听得太多,麻木了。。
10 楼 damoqiongqiu 2011-03-24 12:21
陈词滥调,
9 楼 Ring风 2011-03-24 11:10
请参阅《代码大全2》《code complete2》,里面详细论述了多种编程原则与技巧,能提高代码质量。
8 楼 aiyanbo 2011-03-24 09:38
我在想,写这篇文章的大哥是不是用记事本写代码的?
7 楼 geminiyellow 2011-03-24 09:33
beeke 写道
这位国外程序员是新手吧

no,做外包的新手笔记。
6 楼 zhanghe086 2011-03-24 09:32
借鉴借鉴,以后用的着
5 楼 beeke 2011-03-24 09:26
这位国外程序员是新手吧
4 楼 LubinJava 2011-03-24 08:37
借鉴之..
3 楼 xiaodatao 2011-03-24 08:08
7. 避免使用幻数(magic numbers)
2 楼 huyang1205 2011-03-24 00:59
是的,借鉴学习
1 楼 lixinyang 2011-03-23 22:42
3/15两条:作者不用SCM工具吗?git、svn、cvs都好呀
6/12/13三条:Eclipse这类的IDE会帮你搞定这些基本东西的。
其他的多数条目都是非常有帮助的

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • UI自动化之分层思想pom模式

    1.什么是POM 页面对象模型(POM)是一种设计模式,用来管理维护一组web元素集的对象库; 在POM下,应用程序的每一个页面都有一个对应的page class; 每一个page class维护着该web页的表现层和操作层; page class中的方法命名最好根据其对应的业务场景进行, 例如通常登录后我们需要等待几秒中,我们可以这样命名该方法: waitingForLoginSuccess(). 2.POM优点 2.1.POM提供了一种在UI层操作、业务流程与验证分离的模式,这使得测试代码变得

  • 探索页面对象模型(Page Object Model)框架:原理、应用与最佳实践

    页面对象模型框架是一种基于面向对象编程的测试自动化框架,旨在提供一种结构化的方法来管理Web应用程序的测试脚本。它将每个页面抽象为一个对象,并通过对象的方法和属性来执行操作和验证。该框架的核心思想是将页面的结构与测试逻辑分离,实现测试脚本的模块化和可复用性。通过页面对象模型框架,测试人员可以更加专注于业务逻辑和测试场景的设计,而无需关注具体的页面实现细节。

  • 3.13 Web自动化 --- PO设计思想介绍

    一 、 PO 是什么 页面对象模型(PO)是一种设计模式,全称(Page Object),用来管理维护一组web元素的对象库 在PO下,应用程序的每一个页面都有一个对应的page class 每一个page class维护着该web页的元素集和操作这些元素的方法 page class中的方法命名最好根据对应的业务场景进行,例如通常登录后我们需要等待几秒钟, 多用于UI自动化测试(例: Web ,APP等) 二、代码结构 1. PageObject层页面对象内容同包含: ...

  • 自动化测试框架——页面对象模型POM & Selenium

    自动化测试

  • Playwright(Java版) - 7: Playwright 页面对象模型(POM)

    页面对象模型是一种基于对象的设计模式,用于将页面的结构和行为封装为独立的类。

  • Selenium——页面对象(Page Object)模式浅析

    Selenium——页面对象(Page Object)模式浅析 页面对象模式简介 Page Object三种实现 简单了解maven

  • POM模型

    POM模型简单了解,最后部分待补充

  • 【Java设计模式】页面对象模式

    Java中的页面对象模式旨在为网页的UI元素创建模型,以提高测试自动化代码的可维护性和可读性。

  • ASP.NET 页面对象模型

    ASP.NET 页面对象模型发布日期: 4/1/2004 | 更新日期: 4/1/2004ASP.NET Web 页面生命历程中的一天Dino Esposito Wintellect2003 年 8 月适用于: Microsoft ASP.NET摘要:了解围绕 ASP.NET Web 页构建的事件模型,以及一个 Web 页面在其转变为 HTML 的历程中的各个阶段。

  • 页面对象模型

    """ 在ui自动化中的思想: 代码与数据分离 ====》基于数据驱动 逻辑代码说测试代码分离====》基于关键字 和 页面对象模型胡思想 POM(页面对象模型):核心概念是将一个WEB页面当成一个基本单位,对页面控件及其部分操作进行封装;这样有利于 理解系统的业务流程,知道系统中主要有那些页面、每个页面中主要有那些功能;更大范围的 实现逻辑代码肯测试代码胡分离,也更加方便维护 基于POM的项目结

  • Selenium对象页面模型

    页面对象模型page object model是selenium中的一种脚本设计模式,它能将页面元素封装起来,与业务操作分隔开, 在页面变化改变时,无需去修改业务逻辑代码,提高脚本维护的效率。 1、po设计模式实例简介 (1) 新建一个po包,在其下面新建登录页面类Login (2)在testng类中调用Login类中的登录方法login ...

  • 页面对象(page object)模式

    页面对象模式简介使用页面对象的设计模式。页面对象模型将测试代码和被测试的页面的页面元素及其操作方法进行分离,以降低页面元素的变化对测试代码的影响。每一个被测试的页面都会被定义为一个类,类中会定位所有需进行测试操作的页面元素对象,并且定义操作每一个页面元素对象的方法。 如果用户没有使用此模式,那么奖登录过程都用相同的代码段实现,如果在测试的过程中需要多次操作登录,那么只能复制相同的代码来简化编写工作

  • POM页面对象模型

    1.POM提供了一种在UI层操作,业务流程与验证分离的模式,使测试代码变得更加清晰和可读性 2.POM下,应用程序每个页面都有一个对应的page class来维护该页面的元素集和操作这些元素的方法 3.page class 中的方法命名最好根据其对应的业务场景进行 转载于:https://www.cnblogs.com/littleyang/p/8876929.html...

  • JAVA自动化测试之页面对象模型(Page Object)

    在做Selenium WebDriver 自动化测试时,我们可以使用页面对象模型。这个模型可以使测试脚本有更高的可维护性,减少了重复的代码,把页面抽象出来。对象模型也提供了一个注释,帮助缓存远程,避免出现元素过期的问题。 (一)分离页面元素 public class BDPage { //定义元素变量 /**定义百度搜索的输入框*/ @FindBy(id="kw") @CacheLooku

  • GUI自动化模块化实现方式

    效率为王:脚本与数据的解耦 + Page Object模型 1、数据驱动:实现了“测试脚本和数据的解耦”,数据驱动测试的数据文件中不仅可以包含测试输入数据,还可以包含测试验证结果数据,甚至可以包含测试逻辑分支的控制变量。 2、页面对象模型:以页面(Web Page 或者 Native App Pag或者 Native App Page)为单位来封装页面上的控件以及控件的部分操作。而测试用例...

  • BOM

    BOM——浏览器对象模型(Browser Object Model) 什么是BOM? BOM是Browser Object Model的缩写,简称浏览器对象模型 BOM提供了独立于内容而与浏览器窗口进行交互的对象 由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性 BOM缺乏标准,JavaScript语法...

  • 页面对象模型设计方法-POM

    POM,全称Page Object Mode,这种模式是纯粹的应在Ui自动化阶段 1、完整的规范化的框架设计模式 2、便于维护和优化 3、便于公司的产出 4、实现了高内聚低耦合 在市面是哪个自动化测试主流的设计模式 1、关键字驱动+数据驱动 2、POM+数据驱动 一个网页要进行添加商品到购物车 1、访问首页,进入商品详情页 2、选择商品属性,点击加入购物车 3、登录操作 4、添加成功,进屋购物车看是否添加成功 ——首页——商品详情页——购物车页面 所以的业务流程都是基于一个个页面进行的组合,进行对应的操作,

Global site tag (gtag.js) - Google Analytics