技术宅,fat-man

增加语言的了解程度可以避免写出愚蠢的代码

导航

随笔分类 -  代码风格&质量

上一页 1 2 3 4 5 6 下一页

阅读优秀代码是提高开发人员修为的一种捷径
摘要:http://blog.jobbole.com/471/编者按:原文作者Alan Skorkin是一名软件开发人员,他在博客中分享对软件开发相关的心得,其中有很多优秀的文章,本文是其中的另一篇。Alan认为:阅读优秀代码是提高开发人员修为的一种捷径。以下是全文。我突然想起来,很多程序员都讨厌阅读代码。来吧,承认吧! 每个人都喜欢编写代码,编代码是件趣事。 另一方面,阅读代码也不容易。 不仅不容易(编注:参见《微软资深软件工程师:阅读代码不容易》),而且还非常枯燥,咱们要面对这一事实。任何不是你的代码都不怎样。(虽然我们没有说出来,但我们都是这样想的。)即便是你自己几个小时之前写的代码,也会看起 阅读全文

posted @ 2013-12-18 15:49 codestyle 阅读(235) 评论(0) 推荐(0) 编辑

防止代码变质的思考与方法
摘要:http://blog.jobbole.com/31248/1、软件长期运营存在什么问题一个大规模的客户端软件的生命周期中,我们可以把它分为两个比较粗的时期。一个是前期的搭建软件的时期,即从无到有的时期;第二个是搭建完成之后,进入的一个稳定的运营时期。第二个时期才是最关键的,在这个时期我们会持续的迭加需求,持续的优化功能,而且第二个时期也是代码在慢慢变质的时期。在这个时期,你可能会发现:我们的软件慢慢出现模块耦合严重,牵一发而动全身;每个版本都会涌现出老功能的BUG,你没动过的模块也会出BUG;或者改了一个小问题了,带出来很多其他问题;缺乏扩展性,往老模块加新功能非常痛苦;程序的崩溃率越来越高 阅读全文

posted @ 2013-12-18 14:26 codestyle 阅读(223) 评论(0) 推荐(0) 编辑

干掉你程序中的僵尸代码
摘要:http://blog.jobbole.com/30690/随着万圣节越来越流行,我感觉有必要跟大家讨论一下一个在软件开发中非常普遍的问题:僵尸代码。几乎所有我接触过的代码库里都四散着很多小段的,甚至大片大片的被注释掉的代码。这就是僵尸代码。//目前禁用这项功能。Jimmy在写这段代码时肯定是喝醉了。//你可能以为这里发生了恐怖的代码凶手案…不,不,我只是把它们注释掉了…为什么称它们为僵尸代码?你知道,僵尸不并不是真的死的。就像恐怕电影里告诉我们的,尽管僵尸看起来是死人,但它们仍有能力四处出没袭击我们。相同的道理,僵尸代码也是处于不生不死之间…它们在伺机搞砸我们的工作。注释掉的代码还活着,它们 阅读全文

posted @ 2013-12-18 14:25 codestyle 阅读(583) 评论(0) 推荐(0) 编辑

如何防止代码腐烂
摘要:http://blog.jobbole.com/5643/很多团队都有这个问题,一个项目的代码本来开始设计得好好的,一段时间以后,代码就会变得难以理解,难以维护,难以修改。为什么?我一直在思考这个问题。让我们先看一个人的情况。1.程序员的成长新手的代码新手的代码没有经验,基本不考虑代码设计,代码规模稍稍大一点则自己就乱了。进阶者的代码小规模的时候大规模的时候进阶者已经知道如何设计代码,懂得代码规则,但一般局限于一个模块。规模一大,模块间的调用就会比较混乱,难以维护。有经验者的代码有经验者的代码,模块内部代码整洁,模块之间层次清晰,有设计模式,有成熟的体系。可以保持长期的代码整洁。那么一个团队里 阅读全文

posted @ 2013-12-18 14:24 codestyle 阅读(244) 评论(0) 推荐(0) 编辑

当一个对象方法什么都没干时
摘要:本文作者介绍:Michael Feathers是Object Mentor International公司的技术顾问。他的工作不仅是技术开发,他还参与对世界各地技术团队进行培训、指导等工作。他曾开发了将JUnit迁移到 C++的CppUnit的初始部分,还有FitCpp——一个C++版的FIT基础测试框架。他是《Working Effectively with Legacy Code》一书的作者。Michael Feathers重构的方式千差万别。当在分析一个很大的方法时,我会首先看一下它的整体结构,心里对如何分解它有了一个初步的感觉。里面的条件判断代码块通常都会是我认为有问题、可以入手的地方 阅读全文

posted @ 2013-12-18 07:06 codestyle 阅读(391) 评论(0) 推荐(0) 编辑

优秀程序员的6个共同特质
摘要:摘要:如果你是一个程序员,你会发现身边优秀的同事也总是有一些共同点。原文作者ROYVANRIJN总结了他身边优秀程序员拥有的6个特质:具有好奇心、热爱分享、具有社区意识、以身为程序员而自豪、有点懒、代码可视化的能力。如果你在一家IT公司,与周边的程序员接触时间越长,对他们的可爱之处了解地就越多:或呆或萌,或正派或猥琐。如果你恰好是一个程序员,你会发现身边优秀的同事也总是有一些共同点。原文作者ROYVANRIJN总结了他身边优秀程序员同事拥有的6个共同特质:具有好奇心热爱分享具有社区意识以身为程序员而自豪有点懒代码可视化1. 具有好奇心他们总是保持一颗好奇心,凡是遇到问题,首先就是:Google 阅读全文

posted @ 2013-12-17 11:07 codestyle 阅读(239) 评论(0) 推荐(0) 编辑

编码出错的问题
摘要:#!/bin/shrm bbbtouch bbbcat aaa | while read linedo echo $line | iconv -f utf8 -t gb2312 >> bbbdonelinux下关于编码有两个相关命令,一个是file,用于检测文件编码格式。一个是iconv命令用于将文件在两种编码格式之间转换。但是,经常会出现一个问题,就是不管怎么转,有的时候就是会报告转换失败,我一直在想这是怎么回事?一种可以说通的解释是文件的一部分已经损坏掉,所以无法进行整体转换,那么我产生一个想法,既然是部分损坏,那么我可以部分读出,部分转换,失败掉的地方就失败掉好了,我可以把大 阅读全文

posted @ 2013-12-11 14:40 codestyle 阅读(630) 评论(0) 推荐(0) 编辑

重构遗留程序的一次案例学习(java程序)
摘要:遗留代码经常是腐臭的,每个优秀的开发者都想把它重构。而进行重构的一个理想的先决条件是,它应该包含一组单元测试用例,以避免产生回归缺陷。但是为遗留代码编写单元测试可不是件容易的事,因为它经常是一团糟。要想为遗留代码编写有效的单元测试,你大概得先把它重构一下。但要重构它,你又需要单元测试来确保你没有破坏任何功能。这种状况相当于要回答是先有鸡还是先有蛋。这篇文章通过分享一个我曾参与过的真实案例,描述了一种可以安全地重构遗留代码的方法。问题描述在这篇文章中,我将用一个真实案例来描述测试与重构遗留系统的有效实践。这个例子的代码由Java编写,不过这个实践对其它语言也是适用的。我将原始场景稍做了些改动以免 阅读全文

posted @ 2013-12-06 10:01 codestyle 阅读(1248) 评论(0) 推荐(0) 编辑

一次awk脚本的重构
摘要:# 脚本功能说明: # 1. 检查URL中的域名是否是指定版本的域名# 2. 对访问bid,authorid的游客身份排重,并累加其pv# 全局变量说明# DOMIAN_LIST 是数组,key是要统计的域名value是域名所属的业务# 函数参数说明:# domain 从URL里提取出来的域名# ver 域名属于哪个业务(wap or touch)# statid 从URL里提取的出来的bookid或者authorid# array 用于排重的并累加PV的数组function compute(domain, ver, statid, userid, array __ARGVEND__)... 阅读全文

posted @ 2013-12-03 17:16 codestyle 阅读(267) 评论(0) 推荐(0) 编辑

不要if else的编程
摘要:http://news.cnblogs.com/n/194216/ 英文原文:Unconditional Programming]本文作者介绍Michael FeathersMichael Feathers 是 Object Mentor International 公司的技术顾问。他的工作不仅是技术开发,他还参与对世界各地技术团队进行培训、指导等工作。他曾开发了将 JUnit 迁移到 C++ 的 CppUnit 的初始部分,还有 FitCpp——一个 C++ 版的 FIT 基础测试框架。他是《Working Effectively with Legacy Code》一书的作者。 条件控制.. 阅读全文

posted @ 2013-12-02 10:56 codestyle 阅读(444) 评论(0) 推荐(0) 编辑

编码规范的要点
摘要:命名恰当的名字,无论多么怎么强调都不过分注释还是必须有啊!行数函数的行数,类的行数,乃至与一个源文件的代码行数都必须恰当,存在一个不宜过大的值和过小的值个数变量个数,参数个数,函数个数,属性个数嵌套层数语句的层数我认为2层是最佳,即for(;;){if(expr){dosomething}}日志日志是了解程序运行状态的最重要工具,以及性能调优的最重要的依据我现在觉得,一般来说名字都应该长一点,不过用于循环的迭代器时允许短一点:int i;for(i=0; i name); }但是这样行不行呢?foreach (i in productList){ Console.writeLin... 阅读全文

posted @ 2013-12-02 10:37 codestyle 阅读(335) 评论(0) 推荐(0) 编辑

最牛B的编码套路
摘要:http://blog.csdn.net/happydeer/article/details/17023229最近,我大量阅读了Steve Yegge的文章。其中有一篇叫“Practicing Programming”(练习编程),写成于2005年,读后令我惊讶不已:与你所相信的恰恰相反,单纯地每天埋头于工作并不能算是真正意义上的锻炼——参加会议并不能锻炼你的人际交往能力;回复邮件并不能提高你的打字水平。你必须定期留出时间,集中锻炼,这样才能把事情做得更好。我认识很多杰出的程序员——这是在亚马逊工作最好的额外“福利”之一。如果仔细观察他们,你会发现他们时时都在锻炼。他们已经很优秀了,但他们仍然 阅读全文

posted @ 2013-12-02 10:17 codestyle 阅读(214) 评论(0) 推荐(0) 编辑

如何阅读大型代码库?
摘要:http://blog.jobbole.com/51973/Casey问我:“对于新手,有什么有针对性的诀窍来阅读大型代码库吗?”碰巧,我认为这是一个非常好的问题。我觉得想要成为一个优秀的开发者,阅读代码库并弄清清楚内部是怎么回事的能力非常重要。在你的职业生涯中你会中途加入一个现有的项目并被要求迅速融入进去。或者,甚至更难,会有一个项目丢给你让你自己一个人搞清楚。最坏的情景就是你被带入一个项目,要你替换掉让工程运行失败的“那些肆无忌惮的*杂种”,并且让工程运行起来。不过更常见的情景是你被要求维护一个已经离职的员工写的代码库。最后,当然,如果你用了任何开源的项目,很大的可能是被要求“你可以扩展它 阅读全文

posted @ 2013-11-27 13:31 codestyle 阅读(284) 评论(0) 推荐(0) 编辑

十种更好的表达“你的代码写的很烂”的方法
摘要:如果你有一个同事,他写的程序与其说是代码,不如说更像希腊神话中女妖美杜莎的头发,你当然不能熟视无睹,你应该做出一些反应,但你可选的合适的反应方式并没有多少:自己默默的帮他整理清楚、向上级抱怨、向其他同事背后唠叨此事、闷在心里直到憋不住,或者这最大胆的方法:走上去直接对烂程序员说他的代码很烂。事实上,这最大胆的方法其实也是最好的方法。大多时候,你可以做的巧妙些,从而避免由此引起的感情伤害或引发咆哮比赛。就像一句古话:只要方式正确,你可以向一个人说任何话。当然,找到这正确的方式并不是轻而易举的事情。为了方法大家行事,下面是10种让你的表达更具技巧性的好方法。开门见山:告诉他你看不懂他写的代码,并追 阅读全文

posted @ 2013-11-18 09:45 codestyle 阅读(289) 评论(0) 推荐(0) 编辑

一次java程序的重构
摘要:// com口操作类package xyz.game;class ComOpera { public void openPort() throws Exception {...} // 打开com public void closeProt() {...} // 关闭com private String readMsg() {...} // 读取com消息 private void writeMsg(String msg) {...} // 写com消息 public boolean getComStatus() {...} private String u... 阅读全文

posted @ 2013-11-12 13:01 codestyle 阅读(1128) 评论(3) 推荐(0) 编辑

漂亮代码
摘要:http://blog.csdn.net/g9yuayon/article/details/1611451从Joe Marshall论证编程是艺术的文章上看到的。编程到底是不是艺术已经快变成继编程语言和Emacs vs Vi之后另一Flame War话题。有兴趣的可以去看reddit的讨论。有意思的是一段漂亮的代码,实现SICP上一坨练习题1.3:实现一个带三个参数的函数。这个函数返回三个参数中最大的两个参数的平方和。题目用来训练学生对条件分支的理解。常规的解法是(迎合一下各位老大,改成C了):int sum_square_largest(int x, int y, int z){ if... 阅读全文

posted @ 2013-11-11 18:39 codestyle 阅读(381) 评论(0) 推荐(0) 编辑

一段代码引发的思考
摘要:http://www.csdn.net/article/2013-11-08/2817433-code-made-me-cry摘要:作者Lukas Eder发表了一篇文章《code-made-me-cry》,引发了开发者们的广泛讨论及思考。在他看来,阻力最小的路径通常是一切错误的根源。因此,即便是为琐碎的应用编写10行代码也是值得的。作者Lukas Eder发表了一篇文章《code-made-me-cry》,引发了开发者们的广泛讨论及思考,我们一起来看下(以下是译文)。我的一位朋友告诉我,他最近遇到关于正在维护的遗留应用程序的一些问题。下面的这段代码就能说明我们正在讨论的内容:1234567S 阅读全文

posted @ 2013-11-11 15:38 codestyle 阅读(228) 评论(0) 推荐(0) 编辑

最难忘的Bug调试经历
摘要:摘要:目前,著名的社区问答网站Quora上出现一个很火的讨论:你调试过最难的Bug是什么?大家纷纷留言,把自己最痛苦的一次调试经验写下来。相信每位程序员都有过一段不堪回首地Bug调试经历,程序员一听到自己的程序有Bug,会有各种搞笑的反应,大家可以移步去看看“程序员遇到Bug后的30种常见反应”。目前,著名的社区问答网站Quora上出现一个很火的讨论:What's the hardest bug you've debugged?很多程序员在下面留言,把自己最痛苦或者最难忘的Bug调试经历分享给大家,笔者就所讨论的内容,整理了两位程序员的回答。不知大家是否有过同样的经历。Dave 阅读全文

posted @ 2013-11-07 14:18 codestyle 阅读(985) 评论(0) 推荐(0) 编辑

15 个变量和方法命名的最佳实践
摘要:1、在每个代码范围内使用足够短和足够长的名称:例如循环计算器用一个字符就可以了,如i;条件和循环变量用一个单词,方法名1-2个单词,类名2-3个单词,全局变量3-4个单词组成2、为变量指定一些专门名称,不要使用例如 “value”, “equals”, “data” 这样的变量名3、变量名要使用有意义的名称,通过变量名能大概反映出其具体的用途4、不要在变量名前加前缀,例如 o_, obj_, m_ 之类5、服从公司命名规范,在命名时使用一致的做法,例如:txtUserName、lblUserName、cmbSchoolType, … 除非是大大降低了可读性6、服从编程语言本身的规范,不要使用不 阅读全文

posted @ 2013-11-06 15:01 codestyle 阅读(487) 评论(0) 推荐(0) 编辑

函数要多小才够好——谈小函数之道
摘要:http://blog.jobbole.com/31396/“设计良好的函数往往比较小,而过大函数的设计往往一塌糊涂,或者存在很大的优化空间。”也许你认为讨论函数的大小没有必要,原因是函数设计的本质是内聚,它的大小只是它的表现形式。而上面的原因有必要让我们讨论一下函数的大小问题。我对函数的核心思路:我提出代码最小处理单元的概念:一个基本操作(赋值,比较等),一个函数调用(包括调用后判断返回值进行判断)都看成一个最小处理单元。那么,一个函数,最小处理单元合理的个数范围在7以内。如果超过了7,你就要考虑把他们拆分成多个函数了(为什么是7?人同时能够处理的信息不超过7个)。最小数目没有限制,即便是只 阅读全文

posted @ 2013-11-06 14:50 codestyle 阅读(343) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 下一页