使用Make的命令行变量
有了BuildBot搭建的持续集成环境还远未结束,具体的构建脚本还得自己来写。我们用的是Make工具,对应要编写的脚本就是Makefile。 Make是日常代码构建常用的工具,尤其是绝大多数C和C++项目都会将Make作为首选构建工具。平时多数情况大家都是直接敲入make命令便开始了构建过程,很少有人为make传入什么参数的(调试Makefile的情况除外)。但是有些时候自定义的Make命令行变量还是很有用处的,特别是在将Make与持续集成环境集成的时候。 ...
有了BuildBot搭建的持续集成环境还远未结束,具体的构建脚本还得自己来写。我们用的是Make工具,对应要编写的脚本就是Makefile。 Make是日常代码构建常用的工具,尤其是绝大多数C和C++项目都会将Make作为首选构建工具。平时多数情况大家都是直接敲入make命令便开始了构建过程,很少有人为make传入什么参数的(调试Makefile的情况除外)。但是有些时候自定义的Make命令行变量还是很有用处的,特别是在将Make与持续集成环境集成的时候。 ...
部门的持续集成一直做的不太好,我们开发部这边甚至一直没能做起来,这其中有各种原因:工具、意识、执行力、沟通等等。将持续集成引入到我们的开发过程中也一直是我的一个目标。去年末启动的一个项目让我感到时机变得成熟了。 新项目的代码是完全重写的,这样的机会甚是难得。因为大多数情况下大家都是在维护现有系统:做些添添补补、修正Bug以及优化之类的事情。项目初期,我特别向大家强调了要严格遵守统一代码风格并将astyle代码格式化工具介绍给大家,手把手地教大家如何利用类似LCUT这样的单元测试框架编写单元测试,讲解什么是Mock测试。前些时间我又将代码风格检查 脚本加入到工程的构建过程中,并将代码风格检查作为最终构建目标的关键依赖,强制大家编写出统一风格的代码。 ...
市面上关于优秀编程风格和习惯养成的书籍还真不少,其中“叫好又叫座”的书诸如《代码大全》、《编程精粹:编写高质量C语言代码》、《编程匠艺》、《重构》以及《Clean Code》等。不过前些天我在网上下载了一本名为《The Elements of Programming Style》的电子书,看过此书后,我才知道开创编写优秀风格代码之路的鼻祖是谁(不知道是否还有比这本书更加古老的且系统地讲述优良编程元素的书籍了?)。 ...
本文翻译自”Comments Only What the Code Cannot Say“,来自于《程序员应该知道的97件事》一书中的某个章节。 我们知道理论与实践之间存在差异。在实践中,这个差异远大于其在理论中所描述的那样 – 一份对注释(comments)的观察数据也证实了这一点。理论上,通常的注释代码的想法听起来是值得的:它可以为读者提供更多的细节,可以解释发生了什么事情。有什么能比自我帮助更具可帮助性的呢?然而在实践中,注释却经常变成一个破坏因素。与其他书面形式一样,编写好的注释也是有技巧的。这个技巧的主要内容是知道何时不写注释。 ...
今天是Ubuntu 11.04版本(Natty Narwhal)发布的正日子!想必全世界的Ubuntu Fans们都会或多或少的兴奋上一阵儿。我接触Ubuntu这个Linux发行版较早,甚至可以追溯到Ubuntu 5.10。不过真正将Ubuntu作为我日常工作学习的第一操作系统还是在去年Ubuntu 10.04LTS版本发布之后。从那时起到现在整整有近一年时间了。这里我也来说说这一年来使用Ubuntu的感受。 ...
本文翻译自"The Boy Scout Rule",来自于《程序员应该知道的97件事》一书中的某个章节。 童子军有一条规则:“永远保持离开时的露营地比你发现它时更整洁”。如果你在地面上发现了脏东西,那么无论是否是你留下的,你都要将它清理干净。你有意地为下一组露营者改善环境。(实际上,由童子军之父罗伯特·斯蒂芬森·史密斯·贝登堡编写的原版规则是这样的:“尝试让这个世界在你离开时比你发现它时变得更美好。”) ...
代码风格(style)一直是一个见仁见智的问题,但是对于一个团队而言,如果能在代码风格上达成一致,显然无论对团队还是对个人来讲都是大有裨益的。 ...
本文翻译自”Use the Right Algorithm and Data Structure“,来自于《程序员应该知道的97件事》一书中的某个章节。 一家拥有多个分行的大银行抱怨说他们为出纳员新买的计算机运行得太慢了。这件事儿发生在电子银行以及ATM机使用普及程度远不及现在的那个年代。人们更多的是亲自到银行办理业务,这些运行超慢的计算机使得大家排起了长队。因此,这家银行威胁计算机供货商要结束他们之间的供货合同。 ...
本文翻译自"Fulfill Your Ambitions with Open Source",来自于《程序员应该知道的97件事》一书中的某个章节。 如果你在工作中没能开发那些可以实现你雄心壮志的软件,那你将有很不错的机会。也许你正在为一家庞大的保险公司开发软件,然而你实际上却宁愿供职于Google、Apple、Microsoft或是你自己初创的公司去开发下一个对世界影响巨大的软件。如果你去为你根本不关心的系统开发软件,那你永远也实现不了你心中的抱负。 ...
当今的软件开发更多是团队合作,团队的所有成员均工作在同一份代码库上。这样即便是有了先进的版本控制管理工具(诸如Subversion、Git等),出现冲突(Conflict)的情况也是在所难免的。这就需要你学会解决冲突。 以Subversion为例,多数人在学习这类工具时都选择了浅尝辄止,仅仅停留在会使用update和commit这些常用的命令上。这样大家就错过了那些可以帮助你快速解决冲突的命令,以致很多人无论遇到任何冲突情况都采用了低效的全手工处理的方式。实际上不同的冲突情形处理的方式是有差别的。某些情况下,利用类似svn resolve这样的命令可以帮你快速解决冲突。我们应该有意识地采用一些专业的做法,不是吗?^_^ ...