如何提高代码架构、设计、优雅的能力?

2020-10-28 19:36:23 +08:00
 DarkCat123

常常叹服折服于优秀的代码,觉得他们设计精巧,阅读流畅,需要的时候很多函数恰到好处送到了手边。

自己写的代码总是想一出是一出,耦合重,传参出参奇葩,职责不分,权责不明,东一榔头西一棒子。

在别人架构良好的代码上修修改改能做到不拖后腿,但是自己从头写一个新项目的时候,这个弊端暴露非常严重。

有什么文章、教程、书籍可以提高这方面的能力吗?

4584 次点击
所在节点    程序员
25 条回复
wumou
2020-10-28 19:51:53 +08:00
《重构》、《设计模式》
sirius1024
2020-10-28 19:58:44 +08:00
80%的时间用来设计
20%的时间用来实施(写代码)
剩下的漫漫人生,用来重构……
Kirsk
2020-10-28 20:47:36 +08:00
多读书多思考多写 思考是写的时间 2x+ 不要觉得业务逻辑简单 对屎山零容忍(要么你 diss 同事要么同事 diss 你😆)
redtea
2020-10-28 20:48:35 +08:00
极客时间还是有些专栏不错的
limuyan44
2020-10-28 20:52:00 +08:00
sunny352787
2020-10-28 20:53:21 +08:00
我的方法是重构,不停地重构,代码不断的进化,在这个不断踩坑的过程中自己就会想到一些避开坑的设计方式。
其实设计啊,本质上就是绕开坑走路...
DarkCat123
2020-10-28 21:15:41 +08:00
@wumou 谢谢。设计模式看了一鳞半爪,对我小的部分提高很大;但是高屋建瓴的方面感觉有点不够。我去看看重构


@sirius1024 整天都在重构,但是也不知道是更好了还是更坏了。


@Kirsk 业务逻辑是不简单,不过很多时候总感觉,要不然是“这个需求以后应该不会有共性问题,case by case 做吧”,然后崩了…… 要不然是 “这里我设计一下,考虑到未来,做好扩展性”,结果后来未来的扩展场景和自己设计的不一样,等于增加了更多的困难。


@sunny352787 这个确实,我每次重构,每次写代码都感觉自己有所提高。但是还是感觉提高得不够,想要找找方法论。


@redtea 谢谢,我去看看。
xuanbg
2020-10-28 21:43:02 +08:00
结构!结构!!还是结构!!!

结构设计对了,你会发现所有的功能都早就有合适的坑位在那里,就等着你去把这些细枝末节拼装上去。结构没设计对,总有些功能只能很不优雅地强行拼凑上去。这个时候,就该重新分析问题解决问题了。如果有时间,最好进行一次重构。
Kirsk
2020-10-28 22:49:24 +08:00
@DarkCat123 建议视野放高一些 好的设计脱离不了架构 我个人经验的话若是单一需求会去思考业务场景 需求多会从系统整体去看 维度大概是 相关性 抽象层级 粒度 想要做出良好设计脱离不了面对对象 从业务分析下来能够最直接体现业务就是整体的面对对象结构 可以去看下 ddd 之类的。oo 是应对复杂结构的良药 有一本书推荐 聊聊架构 不厚 但是对于什么是架构说的挺好 也可以从关键词 系统设计去找 内容很多很广
yixinlove
2020-10-28 23:07:27 +08:00
同样的感觉,期待大佬们的解惑。有时候感觉现在的小年轻们比我们想法更好,不知道从哪里可以学到这些方法论
qinyusen
2020-10-28 23:34:43 +08:00
怎么说呢,时间是检验真理的唯一标准,实践是学习和成长的最好途径。

除了历久弥新的《重构》啊还有《架构即未来》这一类理论书籍,我其实推荐是看完之后,套用一些方法,去整理“屎山”,跨过“屎山”

一般来说,自己的“屎山”最好处理,另外达到什么水平才算满意呢?
长久使用不需要打补丁是一种检验方法,“或者”最好能达到“并且”,升级功能的同时代码量低于线性增加(比如基础版本 5 个 feature,100 行代码, 后续连续 3-4 次升级每次 5 个 feature,代码到 500 行了,然后新增功能前进行重构,能达到代码行数-100,新增功能,5 个 feature 只用了 50 行就搞定了,甚至,最后没增加行数)

另外,强迫自己,任何时候,任何规模都都能做到 KISS,DRY,你会发现越来越费神,来找出来一个优雅的方式,解决当下的问题(重构),久而久之,基本上可以做的很好。
James369
2020-10-28 23:35:16 +08:00
使用场景、互操作性、多写多提炼
DarkCat123
2020-10-28 23:41:47 +08:00
@Kirsk 谢谢老哥。ddd 和 ddia 最近都在看。不过我其实更喜欢 functional 的结构。感觉很 fancy 。
但是我感觉架构固然重要,细枝末节也挺关键的。
我司感觉都是架构大体都挺优秀的,但是细枝末节的设计啊 CI CD 啊 代码风格啊,不敢恭维。
@yixinlove 我就是应届生😓

@qinyusen 谢谢大佬说这么多。我感觉本身就是有这根弦,时刻思考,久而久之或许会好吧。
@Kirsk
DarkCat123
2020-10-28 23:43:30 +08:00
@qinyusen 这个量化的方法很好,我准备观察一下自己这方面。
不过我感觉这个方法不绝对,毕竟满足这个条件的,也可以是在 shit 上拉 shit
Kirsk
2020-10-29 00:48:58 +08:00
@DarkCat123 架构也需要在细节体现 不注重细节的架构算务虚 应届生能有这个意识很强了 慢慢体会
DarkCat123
2020-10-29 00:59:39 +08:00
@Kirsk 主要还是压力大,感觉给了我好多新项目。
工作造火箭了😭
reus
2020-10-29 01:06:57 +08:00
推荐一篇文章,Do the Real Thing: https://www.scotthyoung.com/blog/2020/05/04/do-the-real-thing/

怎么提高?多写,多改进,多思考,少发帖,少求神
binbinbbb
2020-10-29 09:11:19 +08:00
https://refactoringguru.cn/
可以看看这个设计模式,重构还没中文化
nl101531
2020-10-29 09:23:42 +08:00
看源代码,看得多了就有感觉了
limboMu
2020-10-29 10:08:09 +08:00
我觉得我的路子比较野,推荐楼主在读的书籍里加一本 SICP

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

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

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

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

© 2021 V2EX