今日份笑话,用 IF 分支区分项目

352 天前
 E0421
我朋友入职一家公司给我发的
"我一开始以为什么样的结构能管里这么多的不同项目放在一起;"
"还能公用代码的"
"而且有的改了之后还会影响其他项目的效果"
"结果全靠 if 判断"
4774 次点击
所在节点    程序员
32 条回复
Goooooos
352 天前
一套设计模式组合拳下来,请问阁下如何应对
thevita
352 天前
"我一开始以为什么样的结构能管里这么多的不同项目放在一起;"

这里的项目应该是 维护给不同 客户的不同版本,包含类似定制专有逻辑这种吧??

如果是这样场景的话,不就是 feature flag 么,很 make sense 啊,在合规的情况下,尽量减少 long-lived branch 带来的维护成本呗

当然,一般这个 feature flag 会配合编译系统食用
billccn
352 天前
唉至今还悔恨我当初写的一个新项目,message dispatch 用的是 if else ,因为最初就 3 种消息,觉得套个框架太累。没想到这个后来成了公司的主力 app ,堆了一大堆东西进来,几年下来几百个消息还在 if else ,你 git blame 一下这个文件里面能看到所有功能都开发者都是谁,算是公司通讯录了。

我尝试了很多次引入 routing 框架,但是要重构的地方太多了,每次好不容易通过代码审阅结果又 merge conflict 了,好不容易可以 merge 了,老板又觉得风险大零收益。于是当初一念之差就形成了一个永久的屎山。

后来想想这才是真正的软件工程。
ydpro
352 天前
@billccn 让我想起了《软件设计的哲学》

"
每个软件系统一开始都是美丽、纯洁和干净的。

随着系统的不断构建,它们会慢慢扭曲成越来越丑陋的形状。这在实际系统中几乎是不可避免的。
每引入一个复杂性并不是什么大不了的事情,但是: "复杂性的产生是由于成百上千个微小的依赖性和模糊性随着时间的推移不断累积"
"最终,这些小问题多到每一个可能的变化都会受到其中几个问题的影响"。
这种递增过程是导致复杂性难以控制的部分原因。
Ousterhout 建议采取零容忍的理念。
"
xiaoranj
352 天前
@billccn 算是公司通讯录了。
SZP1206
352 天前
@billccn 看到这条有笑出声
luzemin
352 天前
@billccn 每次我在屎山上添新屎的时候,我就想,这又不是我的错,我这也是 follow design 了,再看看 git blame ,你瞧瞧,又不是我一个这么干,心安理得。哈哈哈
kaedeair
352 天前
这是特性开关的用法啊
jwj
351 天前
大道至简,if 不是最简单?
daimiaopeng
351 天前
高端的代码往往只需要简单的 if
unco020511
351 天前
这里的项目是指啥意思
huzhizhao
350 天前
就说能不能用吧,哈哈哈

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

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

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

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

© 2021 V2EX