import类,而不是import整个包
在很多语言里,这通常是一种被推荐的做法,有些甚至是必须的。如果是在C++里,这还算是有点意义,因为更少 #include 意味着更快的编译速度,然而,这种意义仅体现在需要花很长时间去编译的大型项目中。
而对很多像Java这样的语言,这毫无意义。因为它不影响编译的时间,所有你得到的回报只是花更多的努力来维护你的import语句。虽然IDE可以帮助你做这些事情,但你仍然需要时不时的多点几次鼠标/键盘,在版本控制系统里多留几条变更记录,干扰你的代码审查。有什么实际用处?向官僚机构表明代码很规范,无它用途。
面向接口编程
这项编程法则要求程序员定义接口,并针对接口来编程,而不是针对实现编程。理由非常简单:容易开发第二种实现,易于测试(真的吗?),更有效的使用代码。
问题就出在你不能凡事都按照这个原则。我个人认为,如果一个方法需要有多个实现,那使用接口是不二选择。但除此之外,如果你仍遵守的话,除了增加代码量,增添麻烦外,不会有任何好处。而且,把一个类重构成接口和它的实现并不困难,事实上是非常简单,所以,为什么一开始就要写接口呢,当需要时把它改造成接口也不晚。
禁用某种语言功能
在很多企业、组织使用的编码规范中,你会发现各种各样的类似于“不要使用goto语句”,“不要使用三元操作符”等规则。
如果一种语言的某种语法并未标志为“deprecated”,为什么不让人使用?当然,要正确的使用!即使像 goto 这样的语法同样可以让代码更可读、更易理解——只要你能以正确的方式、用在正确的地方。
使用Setters/getters,禁止public属性
这是最著名的Java风格,Java里任何公有属性都是不提倡的,任何属性都应该通过 setters 和 getters 操作,不允许有任何质疑。有些共用框架更加强化了这些。每次当我看到一个5年前的老类里只有一些私有属性和公有的无聊的 setters 和 getters ,我都会奇怪这是要干嘛?是为了增加代码量?是为了预防将来有可能出现意外的属性值修改?但是如果真的有人修改了,这又能起到什么预防效果?
单个返回语句
有人说多个返回语句会让代码变复杂。我发现却正好完全相反。当方法/函数在退出之前需要做一些收尾工作时,单一return语句会让函数更简单,但在其它很多情况下,这反而会让事情变得复杂,你需要添加额外的if-else来处理各种非正常退出情况。
尽量责任分离
我这里主要是针对“尽量”。有些人把这做到了极限,甚至有些变态。没错,把大的复杂的问题拆分成小的简单问题,这很好。但拆的太小就会引起新的问题。如果你把一棵树砍成牙签那么大小的块,你得到的就是一堆垃圾。
有些问题本身就是很复杂,你无法通过拆解来让它变简单。
为了让这篇文章有个比较积极的结尾,下面是我认为的放之四海皆准的最佳实践方法:
- 做任何事情都要有个理由
- 如果你做的未能符合预期,重做,替换方法或给予修正
- 扔掉垃圾通常是你最应该做的事情——不论这垃圾造价多高
本文转载自http://www.aqee.net/programming-best-practices-i-disaprove/
相关推荐
unix-linux编程实践教程
MATLAB编程实践中文翻译版,高清
unix编程实践
算法原理与编程实践算法原理与编程实践算法原理与编程实践
本文是《UPnP编程实践》系列的第二篇,主要介绍UPnP的设备发现过程的协议实现。关于UPnP协议的框架性介绍,您可以参考《UPnP编程实践》系列的第一篇。UPnP协议的设备发现过程使用简单服务发现协议,此协议实现了在...
网络编程实践-陈硕 81课视频,TCP、UDP实践,正在看书,结合视频应该会更好把,一起交流一下把
本课程从网络编程的基本原理入手,基于Linux系统平台,通过大量的实践案例,帮助学习者掌握服务端网络编程的核心机制、编程模型、以及最佳实践。同时交叉演练使用C++,Python和Go语言进行编码。 课程亮点 1.Google...
Unity的C++编程实践.zipUnity的C++编程实践.zipUnity的C++编程实践.zipUnity的C++编程实践.zipUnity的C++编程实践.zipUnity的C++编程实践.zipUnity的C++编程实践.zipUnity的C++编程实践.zipUnity的C++编程实践....
Python或JES入门级讲义,适合初学者学习
Java并发编程实践
JAVA并发编程实践,对基础好的,这秘籍便可打通任督二脉,多线程开发小case的。
《JavaScript语言精髓与编程...本文主要有“命令式语言”、“函数式语言”和“动态语言”三个部分,均精减自《JavaScript语言精髓与编程实践》一书的相应内容。本文最末一个部分,对几种语言作一综述,一孔之见而已。
Java并发编程实践Java并发编程实践Java并发编程实践
Java 3D编程实践. Java 3D编程实践.rar Java 3D编程实践.rar
《JAVASCRIPT语言精髓与编程实践》.周爱民
JAVA 并发 编程 实践
武大国软 Windows编程实践 三个项目和实验报告 高分作业 包括:实验一:用Visual C++开发简单的WinAPI程序 实验二:用MFC开发计算器程序 实验三:用MFC开发简单文本查看程序 和总的实验报告
java并发编程实践
java并发编程实践java并发编程实践java并发编程实践java并发编程实践
linux编程实践教程 chapter6-10