上次聊了“
缺乏面向对象基本功”,今天来说说编程习惯的问题。今天说的这些坏习惯大部分都是跨语言的(C++、Python新手也有),而且大部分都需要靠平时不断地努力才能慢慢改掉。<!--program-think-->
★
随意地命名 有些新手写程序,当需要定义某个变量名(也可能是函数名、类名、包名等)时,随意地一敲键盘,名字就起好了......若干星期后,碰到某bug,再来看自己写的代码时,心中暗自嘀咕:“这代码是我写的吗?咋都看不懂捏?”
所以我常跟新来的菜鸟说,命名不规范害死人啊!鉴于该问题相当普遍,我整理了几种典型的作为反面教材,具体如下:使用单字母命名变量;使用一些没太大意
义的变量名(例如s1、s2、s3);对同一个业务概念使用不同的术语/缩写(容易让读代码的人神经分裂);使用拼音命名(如果你团队中有港台人士或者老
外,就惨了)。
★
习惯于代码的copy & paste 这是一个很普遍的问题。很多新手写代码的时候,如果发现要写的某个函数和前几天写的某个函数差不多,就把原来的那个函数贴过来,然后稍微改几下,心中还暗喜:“又快速搞定了一个功能”......
同学,如果你也喜欢这么干,可要注意了。这种做法是代码臭味(借用《重构 - 改善既有代码的设计》的提法)的主要来源,导致代码可维护性大大下降。当你将来需要增加功能或修改bug的时候,要同时改动多个地方,而那时你估计已经想不起来这砣代码有几个克隆了。
★
Magic Number满天飞 如果你没有听说过“Magic Number”,先看“
这里”了解一下。
为了说明Magic Number的问题,咱找个例子来说事儿:假设有个业务逻辑中需要进行10秒的超时等待,你会怎么写这个sleep语句?我估计大部分人不外乎下面三种写法。
1、直接写上sleep(10*1000);了事
2、定义一个常量TIMEOUT_XXX = 10*1000;然后sleep(TIMEOUT_XXX);
3、在配制文件中加入一个超时项,然后程序读取配制文件获得超时值,然后调用sleep。(此处提到的
配置文件是广义的,泛指各种可用于存储配置信息的机制,如xml文件、数据库等)
如果你的做法类似于写法1,你多半喜欢随手硬编码。硬编码不光缺乏可读性,而且具有和“代码拷贝粘贴”类似的代码臭味(可能会存在多个Magic Number克隆),不利于日后维护。
至于写法2,比写法1稍好(至少可读性好了)。但是,将来一旦发生需求变更,要求在
运行时调整超时间隔(甚至要求让用户来配制超时间隔),则写法2的缺点立马暴露无遗。
★
代码耦合度太大
每当说到MVC或者设计模式,几乎每个Java开发人员都能说得头头是道?但是说归说,真正写代码的时候,鲜有人写出的代码是层次清楚的。至于说到代码
耦合分别由哪些情况引起?什么是正交的设计?(关于耦合与正交设计,我后面会专门讨论一下)能完全搞明白的人就更少了。
所以很多Java新手的代码耦合度大也就不足为奇了。我曾经抽查过试用期员工的代码,各种业务逻辑纠缠在一起,代码臭味都要熏死人。想重构都无从下手,只好让他推倒重写。
★
被GC宠坏 由于Java在语言层面提供了内存的垃圾回收机制,程序员只管申请内存,不需要再关心释放的问题。因此很多新手养成了坏习惯,对于其它资源(比如数据库连接)也只申请不释放(有些人甚至天真地以为JVM会帮你搞定资源回收)。
还有些人虽然知道资源需要释放,但是常常忘记(比如写了打开数据库连接和相关代码,
即将写关闭数据库连接时,突然有人叫你去吃中饭,回来后就把这茬给忘了)。
这个坏习惯会导致资源的泄露,而资源泄露往往比内存泄露更要命。如果你写的程序是长时间运行的(比如运行在WebServer上),时间长了会由于资源耗尽而导致整个进程出问题。
下一个帖子,聊一下“
异常处理使用不当”。
http://program-think.blogspot.com/2009/02/defect-of-java-beginner-3-code-style.html
分享到:
相关推荐
第三个通病是缺少良好的编程习惯。良好的编程习惯能提高代码的可读性和可维护性。例如,命名规范是至关重要的,一个随意的命名可能会导致后期难以理解和调试代码。避免使用单字母变量名,使用有意义的标识符,保持...
编程的怪圈和通病,书上的代码都看的懂,为什么还写不出来呢
3. 楼地面质量通病防治:可能包括空鼓、开裂,需要严格控制基层处理,保证混凝土浇筑质量,避免干缩裂缝。 4. 外墙质量通病:防治渗漏和脱落,应注重防水层的施工,选择合适的外墙材料,确保连接部位的密封处理。 ...
### 常见主板故障通病 在计算机硬件领域中,主板作为整个系统的基石,其稳定性和可靠性至关重要。然而,在实际使用过程中,由于各种因素的影响,主板可能会出现一系列故障问题。本文将根据提供的资料,详细解析华硕...
3. **门套底部吊脚**: - 通病:门套底部与门槛石或地面之间有间隙。 - 原因:深化设计未考虑高差,施工人员未核实现场条件。 - 解决措施:深化设计时注意高差,先装门槛石再装门套,预留合适尺寸,如有误差,...
尽管代码可能不够整洁,可读性较低,这通常是初学者的通病,但正是通过这样的实践,作者得以熟悉Java语法、控制流程和面向对象编程的基本概念。在编程学习的初期,动手实践往往比理论学习更能加深理解,所以不必过于...
安徽省住宅工程质量通病防治技术规范流程DB341659~2012.doc 本资源摘要信息是关于安徽省住宅工程质量通病防治技术规范流程的详细说明, Below is a summary of the knowledge points extracted from the given file...
《金螳螂精装修质量通病与预防——木饰面工程篇》主要涵盖了木饰面在施工过程中常见的质量问题以及相应的预防措施。以下是针对这些问题的详细分析和解决方案: 1. **工艺缝或接口处未做油漆** - 通病:木饰面的...
### 施工技术质量通病防治 #### 一、引言 《建筑工程质量通病防治手册》是一本针对建筑工程中常见的质量问题及其防治措施的专业指南。该手册覆盖了从建筑材料的选择到施工过程中的各个环节,旨在帮助建筑行业从业者...
### 建筑工程质量通病防治手册(第三版) #### 重要内容概述 《建筑工程质量通病防治手册》作为一本在行业内具有极高影响力的书籍,自1984年首次出版以来,经过多次修订与完善,成为了我国建筑领域内不可或缺的...
《南京市住宅工程质量通病防治导则》释义深入解析了南京市住宅工程中常见的质量问题及其防治措施,重点关注裂缝和渗漏问题,明确了建设单位、设计单位、施工单位和监理单位在通病防治中的职责与角色,旨在提升住宅...
3. 基层施工质量通病:基层是路面结构的重要组成部分,常见的问题有混合料不均匀,强度不足,平整度差。防治方法包括严格控制材料配比,确保拌和均匀,施工过程中做好压实和养护。 4. 沥青砼面层施工质量通病:主要...
城市道路工程质量通病防治方案是针对在城市道路建设过程中可能出现的各种质量问题进行预防和治理的详细计划。这份40页的方案旨在确保道路工程的质量,提高道路使用寿命,减少因施工质量问题导致的安全隐患,以及降低...
3. 电缆敷设工程质量通病及防治: - 动力与控制电缆分开敷设:遵循设计要求,避免混用电缆槽。 - 垂直敷设:每根电缆应绑扎,避免转角受力损伤。 - 电缆槽利用率:不得超过75%,根据设计要求合理规划电缆敷设。 ...
《消防工程施工质量通病及其防治》 消防工程是建筑物安全体系的重要组成部分,其施工质量直接影响到建筑的安全性和人员的生命财产安全。本课件主要针对消防工程中的常见问题,包括火灾报警系统和消火栓及喷淋系统,...
3. 施工过程监管:建筑工程的每一个施工阶段都有可能导致通病的发生,因此防治导则会强调对基础工程、主体结构工程、屋面工程、门窗工程、水电安装等关键施工环节的严格监管。 4. 施工技术与工艺:不规范的施工技术...
### 笔记本维修通病收集 #### 一、引言 笔记本电脑因其便携性和高性能而受到广大用户的喜爱,但随着使用时间的增长和技术更新换代,笔记本在使用过程中难免会出现各种故障。本文将根据作者多年积累的经验,总结并...
《湖北住宅工程质量通病防治导则》是一份指导性文件,旨在规范湖北省内住宅工程的施工质量,预防和控制常见的质量问题,以提升住宅工程质量。该导则涵盖了从设计到施工、监理、检测等多个环节,强调了预防为主、防治...
零售商“触网”之难:3大模式通病.docx