AJPFX浅谈Java新手问题之缺乏良好的编程习惯

★随意地命名程序员

  有些新手写程序,当须要定义某个变量名(也多是函数名、类名、包名等)时,随意地一敲键盘,名字就起好了......若干星期后,碰到某 bug,再来看本身写的代码时,心中暗自嘀咕:“这代码是我写的吗?咋都看不懂捏?”
  因此我常跟新来的菜鸟说,命名不规范害死人啊!鉴于该问题至关广泛,我整理了几种典型的做为反面教材,具体以下:使用单字母命名变量;使用一些没太大意义的变量名(例如 s一、s二、s3);对同一个业务概念使用不一样的术语/缩写(容易让读代码的人神经分裂);使用拼音命名(若是你团队中有港台人士或者老外,就惨了)。数据库

★习惯于代码的 copy & paste设计模式

  这是一个很广泛的问题。不少新手写代码的时候,若是发现要写的某个函数和前几天写的某个函数差很少,就把原来的那个函数贴过来,而后稍微改几下,心中还暗喜:“又快速搞定了一个功能”......
  同窗,若是你也喜欢这么干,可要注意了。这种作法是代码臭味(借用《重构 - 改善既有代码的设计》的提法)的主要来源,致使代码可维护性大大降低。当你未来须要增长功能或修改 bug 的时候,要同时改动多个地方,而那时你估计已经想不起来这砣代码有几个克隆了。ide

★Magic Number 满天飞函数

为了说明Magic Number的问题,咱找个例子来讲事儿:假设有个业务逻辑中须要进行10秒的超时等待,你会怎么写这个sleep语句?我估计大部分人不外乎下面三种写法:
一、直接写上 sleep(101000); 了事
二、定义一个常量 TIMEOUT_XXX = 10
1000; 而后 sleep(TIMEOUT_XXX);
三、在配制文件中加入一个超时项,而后程序读取配制文件得到超时值,而后调用 sleep。(此处提到的“配置文件”是广义的,泛指各类可用于存储配置信息的机制,如:xml 文件、ini 文件、数据库 ...)
  若是你的作法相似于写法1,你多半喜欢随手硬编码。硬编码不光缺少可读性,并且具备和“代码拷贝粘贴”相似的代码臭味(可能会存在多个 Magic Number 克隆),不利于往后维护。
  至于写法2,比写法1稍好(至少可读性好了)。可是,未来一旦发生需求变动,要求在【运行时】调整超时间隔(甚至要求让用户来配制超时间隔),则写法2的缺点立马暴露无遗。编码

★代码耦合度太大设计

  每当说到 MVC 或者设计模式,几乎每一个 Java 开发人员都能说得头头是道?可是说归说,真正写代码的时候,鲜有人写出的代码是层次清楚的。至于说到代码耦合分别由哪些状况引发?什么是正交的设计?(关于耦合与正交设计,我后面会专门讨论一下)能彻底搞明白的人就更少了。
  因此不少 Java 新手的代码耦合度大也就不足为奇了。我曾经抽查过试用期员工的代码,各类业务逻辑纠缠在一块儿,代码臭味都要熏死人。想重构都无从下手,只好让他推倒重写。xml

★被 GC 宠坏进程

  因为 Java 在语言层面提供了内存的垃圾回收机制,程序员只管申请内存,不须要再关心释放的问题。所以不少新手养成了坏习惯,对于其它资源(好比数据库链接)也只申请不释放(有些人甚至天真地觉得 JVM 会帮你搞定资源回收)。
  还有些人虽然知道资源须要释放,可是经常忘记(好比写了打开数据库链接和相关代码,【即将】写关闭数据库链接时,忽然有人叫你去吃中饭,回来后就把这茬给忘了)。
  这个坏习惯会致使资源的泄露,而资源泄露每每比内存泄露更要命。若是你写的程序是长时间运行的(好比运行在 Web Server 上),时间长了会因为资源耗尽而致使整个进程出问题。内存

相关文章
相关标签/搜索