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

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

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

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

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

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

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

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

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

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

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

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

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

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

18823 次点击
所在节点    程序员
125 条回复
z54749412
2018-09-17 08:49:44 +08:00
来一波 github 看看大佬是怎么样的老手。。。。
Pythoner666666
2018-09-17 08:57:06 +08:00
其实不用这么多,看一眼变量名就知道了
zaqmjuop
2018-09-17 09:09:44 +08:00
funcA(funcB(funcC(funcD(funcE()))))
FakeLeung
2018-09-17 09:10:24 +08:00
变量有点不同意。

请大佬们帮我想个好一点的变量名吧。要求一眼就知道干啥的:
商品砼管理
限额领料
质量安全整改通知单
itskingname
2018-09-17 09:46:13 +08:00
Python 代码:

```python
a = []
a.append('aaa')
a.append('bbb')
a.append('ccc')

for i in range(len(a)):
print(a[i])
```
chenyu8674
2018-09-17 10:16:28 +08:00
if (isReady== true) {
……
} else if (!isReady) {
……
} else {
……
}
YzSama
2018-09-17 10:35:23 +08:00
User user = userMapper.selectById(1);

if(user==null){
user.setXXX();
}

以上亲身经历,帮同事调试一段总出错的代码... 我一度怀疑他写的代码是怎么跑的.
enenaaa
2018-09-17 10:52:20 +08:00
@itskingname #85, 一看就是写惯 C++的。
zhaogaz
2018-09-17 11:03:33 +08:00
讲道理,我觉得看不出来。

新手一般都写不出代码。

干了五六年的人还有楼主说的毛病的人大有人在。
bp0
2018-09-17 11:17:34 +08:00
反对 2,写了好些年代码了,还是纠结变量命名。
jswh
2018-09-17 11:19:46 +08:00
所有逻辑写在一个函数,不会进行拆分的代码
storypanda
2018-09-17 11:23:38 +08:00
@Phariel 你指的没有缩进?
storypanda
2018-09-17 11:25:12 +08:00
@zjsxwc 大佬说什么都对,其实不应该这样。
就和知乎普通人写一大段没几个赞,牛逼人物几个字几千赞一样。
DnC
2018-09-17 11:40:19 +08:00
见过一个 2 货的代码,给他指出问题,还嘴硬不承认。
parents->father->brother->son->sister->m_friend->school->m_class->teacher->name->first_name = "SUN";
类似这样的;吓得我一机灵。
DnC
2018-09-17 11:42:55 +08:00
还见过一个,是用 VS debug 之后修改的代码:
前提是有个 enum{ONE, TWO, THREE,....} 这样的,
后来有人在中间插入了一个值,变成了 enum{ONE, TWO, HELLO, THREE,...} 了,于是 bug 产生了;
他 debug 后发现了 bug,并修改为:
my_value = 3;
也是吓得一机灵;然后赶紧不点名群发邮件警告。
Mrbird
2018-09-17 11:43:06 +08:00
代码高亮这块不敢苟同
ihavecat
2018-09-17 11:50:39 +08:00
你说命名用中文名让我想起了上次那个用表情包给 js 还是啥的命名变量的,底下全部看懵逼了
pkoukk
2018-09-17 12:01:24 +08:00
呃...我用过的 IDE 似乎都会自动帮你解决 1、3 问题。
至于 2..和菜不菜关系不大,即使英语水平正常,很多贼长的业务术语,也难免大家的写法不一样
closedevice
2018-09-17 12:31:16 +08:00
并不敢苟同,没到本质上.代码时写给人看,其次才是交给机器运行的.良好的代码前提是具有清晰的逻辑体系,就这个样子.
lumnag
2018-09-17 13:07:38 +08:00
这么一说都感觉我自己是老鸟了

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

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

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

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

© 2021 V2EX