转载于:http://www.cnblogs.com/cuiliqiang/archive/2010/12/12/1903809.html
记得来TW之前看到过一个论坛上有人对TW的一条评价:这是一个奇怪的公司,非常强调代码风格。
现在已经在TW工作半年多了,回想起这句话,发现自己已经完全融入到这种“奇怪的”代码风格了。简言之,就是要把程序写的清晰易懂,易维护。具体如何达到这种目的。可以参看下面thoughtworks文集中的一篇,对象健身操,中所阐述的“编程规范”。
- 方法只使用一级缩进
- 拒绝else关键字
- 封装所有的原生类型和字符串
- 一行代码只有一个"."运算符
- 不要使用缩写
- 保持实体对象简单清晰
- 任何类中的实例变量都不要超过两个
- 使用一流的集合
- 不使用任何Getter/Setter/Property
以上的这些标题如果感觉不是很能表意,不妨去网上搜下或者买本thoughtworks文集看看。其中第一条中的具体内容提到“把函数控制在5行”。其他条目中也有一些具体的“变态的”要求。
我在开头把“编程规范”打上引号的意思是:这不是真正要严格遵守的规范,而是一个方向。以此为方向写出来的程序能够在一定程度上符合前面提到的“清晰易懂,易维护”。我一直认为,标准一定是要定高一些的,这样即使不能完全达到标准的要求,也会为此为努力。比如你的标准是60分,你可以轻松的达到而自我满足;而我的标准是101分,虽然永远都达不到,可是我可以保持在饥饿的状态,从而不断的进步。
工作的前4,5个月,大部分时候写的是一些新代码。可以开心的按照上述的原则去编码。事实上写出来的代码也能够让自己觉得满意:短方法,表意的名字,测试,清晰简单的结构。并且感觉现代IDE对这种代码风格也是比较支持的。直到从TWU回来,回到原来的项目。项目进入support阶段。其实就是给人家修修bug。关键这些bug不是我们之前做的新功能引入的,而是他们的陈年老bug,两三年前的都有。所以这个阶段写的新代码少,多数是先读懂之前的代码,然后做少许修改。不得不说看这些老代码看起来真是恨痛苦,很慢。很多超过一屏甚至两屏的长函数,在我们24寸的大显示器下。
在抱怨老代码写的像一坨的同时,突然觉得,还是自己看代码的能力有欠缺。一直工作在相对来说比较简单易懂的代码库上,然后去看这些一坨的代码就好像一个人很整洁很爱卫生的人突然被扔到垃圾堆里,异常难受。而对于常年在垃圾堆里生活的人们早已久闻不觉其臭,甚至还对垃圾堆中的那些病菌产生了抗体。世界没有那么美好,工作中总是会遇到不尽如人意的代码库,无论是做交付还是做咨询。所以除了要有写出清晰漂亮代码的能力外,还要有读复杂,凌乱的代码的能力和改造复杂凌乱代码的能力,也就是我们常说的重构。
复杂代码可以分成两种:
一种是受到语言,平台,库的限制,使得代码无法写的非常简短和易懂。比如使用纯c,没有很好的语言特性和可用的sdk,使得实现复杂逻辑的时候不可避免的要写出很长很复杂的代码。有时短的代码也不一定清楚,比如在代码中大量使用组合表达式或者是位运算符,在让代码变短的同时,变得更难懂。这些时候通常是处于效率的考虑。
一种是我们有了更高级的语言和其上的大量的框架。如java+spring+struts+hibernate,或者是直接用Ruby on rails,Django等更易用的工具。通常在这些框架下写程序,是很容易遵循上面提到的让程序清晰简单的原则的。如果在这样的基础上写出了让人摸不着头脑的代码,那就完全是程序员的责任了。
现在有种感觉,在层层叠叠的框架下写程序,就像是搭积木,越来越简单。底层封装的越来越严实,程序员都像白痴一样机械的在框架中填写你想实现的业务逻辑。发明框架的原因是为了让程序员不再重新创造轮子。但是长期在框架上工作的结果是,大家都不会做轮子了,真正有一天需要你做点不太一样的轮子的时候,就sb了。
程序员写代码的能力是凌驾于语言之上的,是思考问题,抽象问题和用另外一种语言简洁,有效,清晰地描述问题的能力。我相信一个能写出优秀c代码的人通过一段时间对java及其上的一些框架的学习,也能写出优秀的java代码。
目前我正在学习各种各样的框架,平时的工作也是在这些框架上工作,越来越感觉,学习这些新知识的同时,做为一个程序员的基本功也不能放下。框架是很好的东西,在提高生产力方面,但是框架让写程序变得简单的同时也会降低对程序员的要求,久而久之,基本功就被荒废了。如何锻炼这些基本功?个人认为用最简单的语言,如c,去做一些算法题是一个不错的主意;或者不甘做玩积木的小孩儿,看看框架的源码。其实做为一个计算机专业的学生,这些锻炼应该是当学生的时候都好好练习过的东西。如果现在发现有所欠缺了,就赶紧补补吧。
分享到:
相关推荐
《疯狂Java:突破程序员基本功的16课2》是一本深入浅出的编程学习书籍,专注于提升程序员的基础技能。作者李刚以其丰富的教学经验,精心设计了16个课程,旨在帮助读者全面掌握Java编程的核心知识,为日后的职业发展...
《疯狂Java:突破程序员基本功的16课》是一本专为Java初学者和有经验的程序员设计的书籍,旨在通过一系列深入浅出的课程,帮助读者巩固和提升编程技能,从而达到“疯狂”提升Java编程能力的目标。这本书涵盖了程序员...
根据提供的文件信息,我们可以推断出这是一本关于Java编程技术的书籍——《疯狂Java突破程序员基本功的16课》。尽管没有提供具体的章节内容,但基于书名及其描述,我们可以合理推测这本书的主要内容是帮助程序员提升...
疯狂Java 突破程序员基本功16课1 完全清晰版 5分超低分 挥泪相送啦!这是第二部分 记得下第一部分哇!
在《疯狂JAVA:突破程序员基本功的16课》中,作者深入浅出地探讨了Java编程中的核心概念和技术,旨在提升程序员的基本技能和解决问题的能力。以下是对这些知识点的详细阐述: 1. **Java基础**:Java是一种面向对象...
疯狂Java:突破程序员基本功的16课.修订版 疯狂Java:突破程序员基本功的16课.修订版.pdf
疯狂Java:突破程序员基本功的16课.修订版。。
李刚 著 ISBN:9787115263049
内容讲解的很详细,对java程序员有一个质的提升,欢迎大家下载
《疯狂Java:突破程序员基本功的16课(修订版)》是Java领域著名研究专家、Java语言培训导师、“疯狂Java”创始人李刚老师的又一倾心力作。 在《疯狂Java:突破程序员基本功的16课(修订版)》中,李刚老师专门...
《疯狂Java:突破程序员基本功的16课(修订版)》是Java领域著名研究专家、Java语言培训导师、“疯狂Java”创始人李刚老师的又一倾心力作。 在《疯狂Java:突破程序员基本功的16课(修订版)》中,李刚老师专门针对...
本文将深入探讨程序员基本功的重要性,并分享一系列学习工作中必不可少的资料网站,旨在为每一位编程爱好者提供丰富的资源,帮助他们在技术海洋中航行得更加稳健。 ### 程序员基本功 程序员基本功涵盖了多个方面,...
在《疯狂Java:突破程序员基本功的16课》中,李刚老师一改枯燥的教学方式,专门面向Java初学者可能会遇到的各种学习问题,由点及面,详细讨论了Java内存管理、Java编程过程中常遇陷阱、常用数据结构的Java实现和Java...
本书把容易被Java程序员所忽视的内容整理成书,介绍了Java的对象、数组的内存分配,介绍了常见集合的实现细节、内存回收的细节、表达式、流程控制、面向对象、异常的“陷阱”,常用的数据结构和算法的实现以及其他...
疯狂Java 突破程序员基本功16课1 完全清晰版 5分超低分 挥泪相送啦!这是1 记得下第二部分哇!