什么样的代码一看就知道是新手?

2018-09-16 00:44:18 +08:00
 yidinghe

有的代码一看就是新手写的,写这样的代码的程序员,基本上只能留在初级程序员的岗位上。这样的代码有哪些特点呢?

1、没有格式,混乱不堪。比如缩进对不齐、语句从不换行、空格和制表符混搭等等。

这表明作者缺乏阅读代码,包括自己代码的经验。只有长期经常阅读代码的人才会有意识的对自己的代码做格式化。

而缺乏阅读代码经验的人必然也缺乏维护代码的经验。这种人可能经常跳槽,连自己的代码都从来不看第二遍,留下一堆的坑让别人来填。

而缺乏维护代码经验的人也必然缺乏解决故障的经验和重构代码的经验,而这两个对程序员的工作效率来说是至关重要的。很多时候老油条看一眼就知道问题出在哪里,而新手要调试一整天。别让薪水花冤枉了。

你可能说我太吹毛求疵,不就是排版乱一点,哪那么多道道?但实际情况真的就是这样子。

2、不会命名,或老写错字。简单的单词都能拼错就不说了,我另外举个例子,纸张的正面不是 front 嘛,他一查字典,结果选了 positive,“积极正面”的正面,那好吧,反面你就用 negative 吧,我不,他又查字典,结果起个名字叫 reverse,这搞得完全看不懂了。

让这种人加到项目里面来,你就恨不得手把手的帮他把代码写了(也恨不得薪水都帮他领了),一不留神就各种奇葩名字。其实 Java 早就支持 Unicode,实在不行用中文名字算了。

3、语法高亮。这个从代码本身看不出,但可以瞄一眼作者的 IDE 是啥样。IDE 现在都可以自定义语法高亮,但是默认的情况下都只有三个颜色:关键字一个颜色,字符串一个颜色,剩下的一个颜色。

而实际上经验丰富的开发者都会尽可能多的用颜色,来区分类、成员、方法和参数等等,这样可以提高阅读效率。比如 color-themes.com 就有很多现成的风格。

看得舒服是次要的,最终目的是要提高阅读效率。当然除了颜色外,好的字体也很重要,这里就不多说了。总之,只有老油条才会关注这些东西,不当回事的多半是初学者。

说了这么多,其实一句话:当新手开发效率到了一个极限想要继续提升,就必须在代码的格式、命名、视觉效果上下功夫。这是新手必须要迈过的坎。

18585 次点击
所在节点    程序员
123 条回复
ICKelin
2018-09-16 10:13:40 +08:00
我感觉楼主说的这三点没什么好吐槽的,每个人都是从新手过来的,态度好的话很快就能修正了,再过段时间,可能就能超过楼主了。不就比别人多混多学几年嘛,给人时间就能超过你。
Bibilli
2018-09-16 10:40:49 +08:00
新手与老手的最大却别我认为在于整个代码的架构上来看
inframe
2018-09-16 10:46:07 +08:00
就看新手能多久跨过这个坎了
quinoa42
2018-09-16 10:50:58 +08:00
这三点取决于个人风格,除了瞎取变量名我觉得还算可以接受
要我说大量 duplicate code,一个 function 写 100 多行,chaining method call 这样的才算看着都头疼
jsthon
2018-09-16 11:10:20 +08:00
以 my 开头命名,如 myCode
hlwjia
2018-09-16 11:12:55 +08:00
@lolcat 他的意思是,如果“正面”已经用了 positive 了,那反面就应该用 "negative"。

这样可以保持一致性,如果你说要全改了,那当然是 front and back 了
wolfie
2018-09-16 11:15:53 +08:00
不久前自己写的代码,都要理解半天。
dyy1997
2018-09-16 11:24:00 +08:00
switch(a)
case 1:
a=1;
...
break
case 2:
a=2;
...
break
case 3:
a=3;
...
break
icylogic
2018-09-16 11:25:55 +08:00
多线程里出现 volatile …… (指 c/c++
ooToo
2018-09-16 12:22:05 +08:00
@zjsxwc Are you OK?
Raisu
2018-09-16 13:07:12 +08:00
哈哈哈,想想半年前我连 debug 都不会用被同事吐槽惨了。。。
iwtbauh
2018-09-16 13:13:04 +08:00
我认为一个局部变量起名叫 tmp 是没问题的
因为我鼓励小函数,能很容易看出来这一个函数是干什么的
loading
2018-09-16 13:14:44 +08:00
《问什么样的问题一看就是新手》
bestkayle
2018-09-16 13:31:33 +08:00
我认为不会解决问题的就是新手
mr3x
2018-09-16 13:42:45 +08:00
@dyy1997 这个可以有
zhzer
2018-09-16 13:58:31 +08:00
写很多没用的 ifelse,并且看不出来为什么没用
vivoapex
2018-09-16 15:19:51 +08:00
@ETiV 已购买不用 buyed 那用啥? hasBuyed??
Tyanboot
2018-09-16 15:37:33 +08:00
@vivoapex bought 了解下? purchased 了解下?
huclengyue
2018-09-16 16:02:02 +08:00
缩进混乱?难道是 IDE 不支持格式化吗?
ETiV
2018-09-16 16:07:41 +08:00
@vivoapex bought 和 sold …

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/489742

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX