Re: [请益] 疴 遇到这种事情 是不是需要赶快离职了?

楼主: tbpfs (http://0rz.tw/Uk989)   2024-07-23 14:58:09
等等,我原本以为只是一个简单的问题
居然歪楼了
推动coding conventions 可以从你我做起
像原原po的问题是
if
if
if
if




把判断式改过来变成
if
return;
if
return;
即可
这个就简单起草一份coding conventions
拿给长官review, 以后code review 看到这个问题
就直接贴连结请junior 改就好了
这种东西很多学生时期根本没碰过
自然就会波动拳出现
跟顶不顶大没关系
反而是senior 不知道怎么帮助junior
才是问题
※ 引述《purin88 (原来我是愤怒的乡民)》之铭言:
: 我从上面的文章只看到原po说有很多if...else跟function用原本的copy过来,改一下自
: 己想修改的code
: 但却没看到任何提到效率问题,而且if...else是O(1),并不会拖垮速度。
: 每个人写code的习惯不一样,
: 有的人喜欢这样写
: if() {
: }
: 有的人喜欢这样写
: if()
: {
: }
: 有的人喜欢程式码短就连在一起
: if(...) cout << "xxx";
: else cout << "bbb";
: 也有人喜欢短的程式码连在一起
: cout << "请输入数字月份(1~12):"; cin >> month;
: 有的人喜欢命名用底线分开,如:month_arr
: 有些人喜欢用小写大写分开,如:monthArr
: 有些人不喜欢程式码跟程式码之间有空一行
: while {
: ....
: }
: if() {
: ....
: }
: for(int i = 0; i < N; i++) {
: ....
: }
: 但有些人喜欢有空一行
: while {
: ....
: }
: if() {
: ....
: }
: for(int i = 0; i < N; i++) {
: ....
: }
: 有人程式码喜欢有空格分开
: for(int i = 0; i < N; i++)
: 有人不喜欢太多空格
: for(int i=0; i<N; i++)
: 以上这些都没有错,没有谁的才是对的,谁才是错的,重点流程有没有错,有没有bug,
: 执行会不会慢,巢状循环几层。
: 执著在那些格式很没有意义,或谁谁谁写code格式不符合我意的,就把别人弄走。
: 你不能说你就是标准,全部人都要跟你的写法一模一样,很多人写程式想的是这个问题要
: 怎么写才巧妙解决,而不是十分在乎格式,太执著就有强迫症或太龟毛,合作起来也很痛
: 苦。
: 放过别人也放过自己,互相尊重。
作者: labbat (labbat)   2024-07-23 15:21:00
遇到if-else完整陈述语法就没办法这样偷吃步了
作者: chihlee5566 (阿告)   2024-07-23 15:55:00
Conventions?
作者: stepnight (桃卡武康)   2024-07-23 15:58:00
senior 最大的问题是 知识的诅咒
作者: brucetu (sec)   2024-07-23 16:14:00
每个都有else就不能像你说的这样改真的遇到这种状况只能把条件参数化再写成其他形式,就像route一样,但也有可能到最后你发现还是if else最好维护,而且在某些很在意延迟的场景,if else更好
作者: shooter555 (shooter)   2024-07-23 16:44:00
conversation太多层就是 逻辑不够明确 接手的人很痛苦
作者: ma721 (UndeadJ)   2024-07-23 16:53:00
没事找事,太闲
楼主: tbpfs (http://0rz.tw/Uk989)   2024-07-23 17:27:00
靠边 手指太肥了点到conversation XD
作者: acer1832a (Mike)   2024-07-23 17:28:00
我记得一个func里多个return,这种方式不是不建议使用?
楼主: tbpfs (http://0rz.tw/Uk989)   2024-07-23 17:29:00
你说的可能是很久以前的写法不建议使用但现在为了readability, 都是用这种写法
作者: a3817001 (Heterosis)   2024-07-23 17:45:00
early return现在还满常见的
作者: f821027 (蛋饼)   2024-07-23 17:46:00
一个func多个return满常在leetcode most vote 看到
作者: atst2 (atst2)   2024-07-23 18:09:00
early return 还是要看一下返回的理由是什么比较好.一般的建议还是用在检视输入的资料有没有符合规则.
作者: gino0717 (gino0717)   2024-07-23 19:14:00
如果不能return必须继续做下去怎么办我在c++里面要解析json我都会先给一个if看字段在不在然后再一个if看到底是array还是object 再一个if看到底是字串还是数字 最后才开始做事
作者: abccbaandy (敏)   2024-07-23 19:40:00
C++ json还要手写parser?
作者: DrTech (竹科管理处网军研发人员)   2024-07-23 19:51:00
没看过程式码真的别太笃定对错。
作者: karst10607 (谁可以协助我开板?)   2024-07-23 22:12:00
early return 感觉还比较适合多数情境,防呆机制比起风格是更顺畅的理由
作者: viper9709 (阿达)   2024-07-23 23:49:00
推这篇
作者: crazwade (crazwade)   2024-07-24 00:40:00
推 刚入行也是针对这点有被前辈教育过后来也有像是用枚举或是switch 来取代 if else只能说原 po可能有尽力 但不是当事人不好评论
作者: saladim (杀拉顶)   2024-07-24 00:51:00
其实若if-else或switch里面思路清楚 不会是个问题 而且就我少少的经验来说一但思路清楚 大概也不太会形成很深的if/switch 很难用例子去阐述那种if显示出来的思路杂乱跟跟理解/修改的困难(更难验证逻辑正确性)@atst2 有可能是避免犯错 但我也跟其他人一起讨论当时案例 一旦分析好状况 可以写出用少量的if/switch的同样功能也有分享给对方...比较难理解的是 下次遇到同样需要分析时 还是用同样方式描述路径是有点意外补充:当然也不排除有上面提到的那种极端状况. 至少不是现在遇到的
作者: joeboy (揪立)   2024-07-24 01:30:00
我之前被review也是被教early return
作者: neo5277 (I am an agent of chaos)   2024-07-24 01:37:00
请爱用策略工厂
作者: yamagishi (山岸刑务官)   2024-07-24 06:24:00
你逻辑没理清楚才会觉得 if else 是 must怎么会有人问必须做下去该怎么办…OMG…Guard Clauses 跟 EAFP 有空可以去了解一下
作者: brucetu (sec)   2024-07-24 07:43:00
三小,就是会有if else must的状况啊
作者: ssteves (白熊)   2024-07-24 08:21:00
early return能提高程式码的可读性、维护性,而且也可以减少不必要的计算资源
作者: bnd0327 (阿噗噗)   2024-07-24 10:14:00
如果该函式的行为有清楚定义并做好单元测试,里面if循环复杂一点好像也还好。
作者: yamagishi (山岸刑务官)   2024-07-24 10:16:00
不可能会有,另外写一个 function 在那边 early return而已不然你提出一个例子我们讨论看看这东西你最终只要注意是 Passing By Pointer 还是 Passing By Reference 你就能做出你要的东西了
作者: chal (&nbsp;)   2024-07-24 12:37:00
会写成巢状if 也可能是历史造成的 前人写 后人不敢动太大
作者: brucetu (sec)   2024-07-24 14:33:00
你当然可以把内层的if-else拉出去另一个function取个名字对于要trace整个状况的开发者来说, 逻辑的复杂性没有降低有时候反而跳来跳去更痛苦
作者: sasoman (干 盗帐号勒)   2024-07-24 14:38:00
guard clause 不是蛮基本的吗
作者: sharek (...)   2024-07-24 15:51:00
guard clause, early return 都看情况不用在那边文人相轻
作者: Obama19 (^_^)   2024-07-24 17:07:00
五十步笑百步 一堆early return有比较好吗
作者: abccbaandy (敏)   2024-07-24 18:13:00
不好吗? 哪个条件不要了就选起来删掉就好,完全不用研究那堆if else
作者: brucetu (sec)   2024-07-24 19:37:00
if else 还不是一样选起来删掉-.-真值表画出来就知道你early return不会让复杂度降低只是程式码语法差异而已
作者: abccbaandy (敏)   2024-07-24 20:50:00
波动拳你怎么选...
作者: Csir (张胖胖)   2024-07-24 23:14:00
我之前也看过一堆goto差点自焚
作者: abraxas (Abr.)   2024-07-25 00:07:00
坐等例子
作者: akito117 (宗益)   2024-07-25 18:49:00
early return 在做防呆类型好用,可以简化if else,让逻辑清楚一点。
作者: EricTao   2024-08-06 18:14:00
推楼上 不然光缩排就饱了

Links booklink

Contact Us: admin [ a t ] ucptt.com