在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
程序员无论是在招聘中还是在领导叮嘱都会被要求要有好的编程习惯,“道理我都懂,可是怎么做呢?”以下可以对号入座看看自己的编程习惯是不是“优秀”的。
一、代码低耦合
低耦合性是结构良好的程序的特征,低耦合性程序的可读性、可维护性、可复用性和扩展性都比较好,而紧耦合模块或系统过于紧密,以致在对一个对象进行修改时,可能会发生相互调用。如果两个对象耦合得太紧,修改代码就会成为一场噩梦,而且更容易在每次修改中引入 bug。
二、避开上帝对象
bondObject是一个大型的类或模块,其中包含太多的变量和函数。由于以下两个原因,“知道的太多”和“做的太多”都会导致一些问题。第一,其他的类或模块将变得对数据的过度依赖(紧密耦合)。第二,因为所有的代码都挤在一个地方,所以整体结构混乱。与上帝对象相比,将它分解成许多小对象可能更好。
三、拒绝长函数
正如它的名字一样,长函数意味着函数太长。尽管对于一个函数来说,没有一个数字代表多少行代码“太长”,但是当您看到这个函数时,您就知道它是否太长了。长长的函数意味着包含太多的功能性实现。通常应将长函数分解为多个子函数,其中每个子函数都可用于单个任务或问题。理论上,原始的长函数会变成子函数调用列表,这样代码就会更清晰,更易读。
4.有意义的标识符命名
变量名有一两个字母,函数名没有明显意义,类名被过度修饰,变量名被使用变量类型进行标记(例如,b_isCounted代表 Boolean变量),或者混合使用一段代码中不同的命名规则,所有这些都会导致代码难以阅读,难以理解,难以维护。一般来说,变量名应该是简短的,但是描述性的。一般情况下,函数名应该至少包含一个动词,而且函数名应该显示该函数的功能,但不要使用太多的词,比如类名。
5.消除幻觉
在浏览别人写的代码时,你会发现其中有一些是硬编码的数字。他们可能是 if语句的一部分,或某些难以理解的计算,似乎没有什么意义,当您需要修改模块时,却不能理解数字的含义,这会让您非常烦恼。所以,在编程的时候,一定要不惜一切代价避免这些所谓的“错数”。硬码数字在书写过程中有一定意义,但它们很快就失去了意义,尤其是当其他人试图维护您的代码时。一个解决办法是留下数字的注释,但是更好的办法是把幻数转换成常量变量(用于计算)或枚举(用于 if语句和 switch语句)。代码的可读性是通过给幻数取一个名字来实现的,并且不容易出错。
6.避免深层次的嵌套
深奥的嵌套代码并不总是糟糕的,但是可能会有问题,因为它很难理解,尤其是当变量没有正确命名时,更是如此。如果您发现自己正在编写一个双重、三重甚至四重 for循环,那么代码可能会试图在超出您自己能力的地方寻找数据。然后,您应该提供一种方法,让包含该数据的对象或模块函数调用能够请求该数据。而更深层次的嵌套 if语句则表示您尝试在一个函数或类中处理过多的逻辑代码块。实际上,深层次的嵌套和长函数经常同时出现。如果您的代码中有大量 switch语句或嵌套的if-then-else语句,则可能需要实现 status或 policy模式。
7.简明代码
您在程序的多个独立部分中执行相同的逻辑代码块,然后发现需要修改该逻辑代码块,但不记得执行它的所有位置,假定您最终只修改了5个位置,而实际上需要更改8个位置的代码块,这将导致结果错误。转换成函数通常是一种较好的习惯,因此如果您需要修改这个逻辑代码块,只需修改这个方法,然后将它应用到所有调用它的地方。
八、代码注释
这些代码到处都没有注释。不需要对函数进行功能注释,不需要概述类,不需要解释算法等。可以这样说,写得好的代码不需要注释,但是实际上,即使是最好的代码也没有注释容易理解。当您编写注释时,请记住,您的目标是解释代码块为何存在,而不是解释它正在做什么。注解可以帮助您更好地理解自己和别人的代码,并且减少工作,所以不要忽视它们。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
未来高薪职业有哪些?选择什么职业发展前景好?
未来高薪职业有哪些?选择什么职业发展前景好?互联网行业正在改变着越来越多的传统行业对人才的需求巨大,使得这两年互联网企业的涨薪速度曲线几近陡直。在一线城市以BAT为代表互联网企业给应届毕业生的起薪并不高,但只要工作拼命能力出众在入职后2~3年里就很容易拿到10万元以上的年薪。接下来我们一起看下未来高薪职业以及这些职业发展前景如何。
7980
2019-08-05 14:53:58
程序员常用的十款开发工具推荐
工欲善其事必先利其器。对于程序员来讲,好用的开发工具可以大大提高开发效率。本文将向大家推荐程序员常用的十款开发工具,希望能帮助大家更加优雅地写出代码。这些工具分别是Arthas、ChaosBlade、Docsite、PTS、AHAS、Druid、HandyJSON、Freeline、Cloud Toolkit和Mockito,感兴趣的话就一起来看看吧!
5459
2019-11-21 14:52:28
摸鱼?!求求你们可长点心吧
众所周知摸鱼存在于各个行业,程序员也不例外的,虽说摸鱼舒服,但是摸得不好,很容易摸鱼一时爽,没有年终奖。如何高级的摸鱼呢?把摸鱼摸到把游戏存进项目包里你见过吗?知道这个真相的小谷震惊得眼镜差点掉下来。
3772
2021-08-26 11:39:19
程序员的终极目标就是高级程序员吗?非也!
程序员的终极目标就是高级程序员吗?非也!提起雷军这个名字,很多人都知道他是小米手机的创始人,但却鲜有人知道其实他曾经是一名程序员,且是大佬级别。他作为程序员的一些经历、初衷以及思考,看完之后感触颇深,觉得对刚入行或是已经入行的程序员而言都是宝贵的经验,希望大家看完之后也能有所感触。
2614
2022-05-04 10:48:03
程序员面对996该如何应对?躺平还是卷起来?
程序员面对996该如何应对?躺平还卷起来?谁曾想被996生活方式浸泡了一段时间后的周末路边野餐上,画面不能说惨不忍睹也可以算是风云突变了。挣钱的道路虽然艰难,但未来的生活是光明的,我们要在艰难中寻找一条通往光明的道路!
2292
2022-06-21 11:28:44