什么样的代码算是好的代码, review 应该具有哪些品质

148 天前
 MrRongts

我的代码

3514 次点击
所在节点    职场话题
45 条回复
v2er119
148 天前
哪有什么好代码,代码为业务服务,极致的体验,最好的代码是机器语言。可读,可维护与极致性能大多场景下是冲突的。
MrRongts
148 天前
写了好长时间的业务代码,功能都自己测试过了,review 后很多地方都要改,完了又要重新测试,想想都头大,你们是怎么解决的?


案例代码

```js
// 我的代码
// 把数组转成 key-value 对象
const arr = [
{ id: 1, name: 'a' },
{ id: 2, name: 'b' },
{ id: 3, name: 'c' },
];

const obj = arr.reduce((acc, item) => {
acc[item.id] = item.name;
return acc;
}, {});

console.log(obj); // { '1': 'a', '2': 'b', '3': 'c' }

// review 人员:
// 团队都这样么,你那么写,别人不好看的懂,reduce 通常用在 xxxx ,没听进去
// 改成这样
const obj = {}
for (let i = 0; i < arr.length; i++) {
const item = arr[i];
obj[item.id] = item.name;
}

```
nealHuang
148 天前
@rts1005410788 review 是极具个人色彩的行为,结果的好坏完全取决于 review 者的编码水平。就跟别人点评某个作者的文章好与坏一样。但代码与文章不一样,如果你们公司要求保持统一的代码风格,那你可以通过测试用例来体现你的编码能力,确保期望输入和输出与需求保持一致,中间的代码就按照规范来就好,不用太纠结,打份工而已
y547679519
148 天前
如果有规则按照规则来就行了,面向工资编程,怎么写代码能涨工资就怎么写。
lonjin
148 天前
review 者水平差的话 简直就是灾难
yanqing07
148 天前
@rts1005410788 #2 如果有重复测试的话,你应试写单元测试来保证代码功能。手工测效率太低,而且后面有修改,单元测试不通过也能发现问题。当然,会出现单元测试修改来迁就业务代码。这时,应该将稳定的代码抽出来做一个 function ,这样业务部分修改也不影响,这个 function 单元测试也能少修改
lcbp
148 天前
功能正常,边界处理,高内聚,低耦合,高完成度,目录清晰,命名通俗易懂,有文档。
clemente
148 天前
都 AI 时代了... 不是核心代码
其实只要变量写明白点就好...
clemente
148 天前
我理解是 不要过度设计 越简单越好
到头来很多 架构是 最简单的最优雅最可靠
youyouzi
148 天前
@rts1005410788 你们 review 通常不是你们 leader ?这水平还不如你,怎么敢 review 你的代码还大放厥词的。
youyouzi
148 天前
@rts1005410788 就算要循环,也是这样比较简单吧:

const obj = {};
arr.forEach(item => {
obj[item.id] = item.name;
});
jackOff
148 天前
可维护性好,可读性强,尽量大白话,少用抽象和注解,高度泛型抽象的拉过去打一顿问问你这破业务值不值这么玩,不过度依赖框架,命名规范,尽量不要命名方法和类高度相似的,禁止使用魔法值,统一管理全局静态类,全局变量尽可能放到一个类里,全局变量和静态类,枚举类必须有注释,禁止在正式项目里塞数据库代码生成器这些奇技淫巧,有足够接口文档,并且接口文档要有接口范例,前后端统一 post 请求,项目启动和部署尽可能提供一键脚本,最好有文档,哪怕主程序和组长突发意外死亡也能立刻找人接手
shench
148 天前
据我多年的工作经验来说,能满足老板要求能运行的就是好代码,其它都是扯淡
MrRongts
148 天前
@youyouzi 他就是 forEach ,我纠结的 review 时候,真的有必要纠结这种细节代码,搞的被 review 那个人很没有自信。比如我,😂
jackOff
148 天前
补充一下,任何与跑项目没关系的代码生成工具都禁止放到项目里,这东西设计的人过于个性化,鬼知道今天把你裁了后面接手的能不能看明白你写的鬼画符
somebody1
148 天前
好的代码就是,1000 行的代码,看个三五十行就能理解做了什么事情,改起来不会瞻前顾后,能很快定位到要改动的地方。
youyouzi
148 天前
@rts1005410788 #14 不必在意。你的写法已经很优雅了。

我是 review 的人的话,看到你这个代码是没问题的。

反而组内很多人喜欢写循环操作,我会让他尝试换个思路,提升一下技能。

当然,不是强制要求,毕竟每个人对工作态度不一样,不是太混的,写的太恶心的我一般都是直接 merge 了
godmiracle
148 天前
能实现功能能赚钱的就是好代码
soulflysimple123
148 天前
不同的写法,只要可读性,性能没问题就行,纠结这些真没啥意义。
Nyeshuai
148 天前
@rts1005410788 #2 这就是适合用 reduce 的场景, 这 review 的已经暴露水平了. js 写业务真用不上传统 for, 要用也是 for...of 啊, for 一出至少三行, 早些年还有些性能优势, 现在也就需要中断才用了.

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

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

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

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

© 2021 V2EX