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

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

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

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

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

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

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

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

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

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

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

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

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

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

18621 次点击
所在节点    程序员
123 条回复
cyrbuzz
2018-09-16 16:10:24 +08:00
我觉得可以告诉他查字典找那些带 n. 的词,什么 v. adj. 统统不行。
alcarl
2018-09-16 16:26:35 +08:00
能靠楼主这些看新手的都是强迫症吧。。。。。。时间长了的老油条看代码只关注解决实际问题,格式什么的只要代码逻辑不乱,有分段,不是一坨一坨的,不是一行老长的,不玩语言小技巧的业务代码,都是好代码。
在公司没有代码规范的情况下,自我要求过严会影响效率,更不敢要求别人。
根据业务规模,在适当的时候适度拆分就好。我现在这就有一个项目,就是读个 excel 到数据库然后加工输出一下,是变量名特别英文,结构特别规范拆分特别细,定义了一堆对象,在方法里跳啊跳啊跳的我都快神经了,小需求,简单实现反而看起来更容易。我是不赞成什么都要照框架那样弄的。。。。。。
BingoXuan
2018-09-16 16:49:06 +08:00
1.滥用语言特性,总会带来坑
2.简单问题复杂解决,写的人感觉高大上,调试起来一堆 bug
3.爆炸头式代码(一般而言是意大利面式),完全搞不清要干嘛
4.不合理的命名,非常让人迷惑
pabupa
2018-09-16 17:59:24 +08:00
block+1
bullettrain1433
2018-09-16 21:06:18 +08:00
class a class aa class test。。。。,哎,说多了真的累
hanxiaomeng
2018-09-16 21:13:15 +08:00
分支语句使用先判断模式....
ghhardy
2018-09-16 21:42:12 +08:00
@coffeSlider 我也是觉得,会关注这种问题的人一般是新手居多,就像刚学了点功夫就像找人打架试验自己什么水平似的
ghhardy
2018-09-16 21:44:59 +08:00
@ETiV 你这说把循环分成单独语句的,那不算新手,那叫外行吧?
testcgd
2018-09-16 21:51:39 +08:00
团队有搞 CR 和静态扫描应该就可以避免了吧,都是从新手过来的
vivoapex
2018-09-16 22:27:35 +08:00
@ETiV fuck..
madaosan
2018-09-16 23:52:19 +08:00
自己以前写的代码。。。。
sampeng
2018-09-17 00:13:05 +08:00
一个函数一起就 5-6 行。我就临时从数组取个值出来,我就要用 a 啊 b 的。因为我实在想不出用个特别牛逼的单词放这。是,我是可以放下面写一行… debug 很麻烦不说,又臭又长的一句话我宁愿有个 a,b,c
ETiV
2018-09-17 02:08:00 +08:00
@vivoapex

三点水加个来(涞)念什么
三点水加个去又念什么…… :doge
flowfire
2018-09-17 02:40:32 +08:00
@ETiV #8 buyed 和 selled 我有时候也会这么写,原因是一大片 xxxed 变量里忽然出现一个 bought 就会觉得很难受浑身不舒服
mingl0280
2018-09-17 04:30:59 +08:00
反对 3,太花哨的主题反而很难读好吧
viator42
2018-09-17 06:40:32 +08:00
有经验的上来就能考虑并发可扩展性避免输入错误这样的情况,新手只是完成业务逻辑了事
CodeMan27
2018-09-17 06:58:04 +08:00
现在 jetbrains 全家桶的高亮已经做得很好了,不用自己改
lusheldon
2018-09-17 08:13:23 +08:00
其实这是一个推广贴吗?
xxgirl2
2018-09-17 08:23:00 +08:00
小组织没有统一风格很正常,何况有的时候老大也直接啪啪一串空格敲下去
有的人接过来还知道 astyle 一下,有的也就那样直接上了

当然对我来说 windows 上用 vs 必然配得五颜六色的,漂亮又省事
linux 上 eclipse-cdt 也能五颜六色的,最近打算试试 vscode,还没调教
Allianzcortex
2018-09-17 08:46:45 +08:00
@Phariel 用 return a==b 这样的一行语句么?我觉得这个写法粗糙了点但也很直观啊

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

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

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

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

© 2021 V2EX