我总对自己的写的程序结构不满意,需要补习什么呢

2019-06-11 09:20:49 +08:00
 bmos
因为大环境不一样,独立成长,总是感觉自己写的缺了点啥。
5549 次点击
所在节点    Python
41 条回复
zjsxwc
2019-06-11 09:23:03 +08:00
发出来看看
trait
2019-06-11 09:24:55 +08:00
可以看下 代码大全
jingyulong
2019-06-11 09:31:03 +08:00
设计模式,重构,代码大全,数据结构与算法分析
q8164305
2019-06-11 09:35:57 +08:00
我也是,总觉得自己代码不够好,又不知道怎么改,野路子的好像都这样,哎
qiumaoyuan
2019-06-11 09:36:47 +08:00
https://www.v2ex.com/t/569357#r_7412894

09 年左右大概和楼主有一样的困惑。
cedoo22
2019-06-11 09:36:51 +08:00
@jingyulong 调下顺序,代码大全 设计模式 数据结构与算法分析 重构
whileFalse
2019-06-11 09:37:29 +08:00
设计模式有用。不过我建议读框架源码。
tt67wq
2019-06-11 09:39:53 +08:00
补习下心态
specita
2019-06-11 09:41:55 +08:00
多写多看吧
jingyulong
2019-06-11 09:47:17 +08:00
@cedoo22 #6 赞!其实我是想到什么就写什么。如果要算基础的话,数据结构和算法要排在第一。还有一本《代码整洁之道》不错
qiumaoyuan
2019-06-11 10:00:51 +08:00
我觉得建议看源码的最扯淡,我不知道为什么这种说法能一直流行到现在,我也很好奇这些人在说出这些建议的时候是不是真的清楚自己在说啥。

首先,开源代码本身就良莠不齐,请问如何分辨哪些是优秀的?使用的人多就是优秀的?我觉得很多时候恰恰相反。MooTools 这样优秀的开源库就很少人知道,同时期最流行的却是 jQuery。MooTools 在小众的圈子里一直到存活到 CoffeeScript、TypeScript、ES6、ES7 出现之后,开发人员觉得 MooTools 完成使命,可以退休了,官方才宣布停止维护。

其次,优秀的源代码你看过一遍基本上只会有一种感觉:这代码本来就应该是这么写,理所当然的,看过之后根本不会留下什么印象。而让你留下深刻印象的往往是些炫技的代码,这样的代码又只会把人往坑里带。
brust
2019-06-11 10:00:59 +08:00
七大原则
设计模式
数据结构
算法
看源码
多看多写
多画 UML
cedoo22
2019-06-11 10:02:42 +08:00
@jingyulong 个人把代码大全 排第一,是觉得其中有几章是一些很基本的原则, 像‘变量的力量’、‘工作的类’啊 这些, 数据结构和算法 也很重要,但不能一蹴而就的。
bmos
2019-06-11 10:26:42 +08:00
@qiumaoyuan #11 源码偶尔也看看的,确实有这种感觉。
qiumaoyuan
2019-06-11 10:35:11 +08:00
@bmos 我觉得完成功能之后,消除重复是首要目标。当你竭尽全力的去寻找消除重复代码的方法的时候,会发现许多面向对象的特性正好可以拿来消除重复;然后会发现设计模式原来是这么回事;会去寻找在当前这个场景下,消除重复最合适的重构手法。所有的面向对象的特性、设计模式和重构手法的应用,全都是最合适的。

但如果一上来就去找设计模式之类的东西,反而会没了方向,学了方法不知道该在哪用。

其实,在“消除重复”之前,还有更根本的东西:“消除重复”的动机是什么?是降低代码结构的复杂性。

前面一直有人在提《代码大全》,《代码大全》里面很重要的一句话大概是这样的(原话不太记得了)“软件开发中的首要目标就是降低复杂性”。而复杂性来源于哪里?一、重复代码;二、糟糕的命名。
qiumaoyuan
2019-06-11 10:37:22 +08:00
抓到了根本,招式都是结果。
bmos
2019-06-11 11:28:09 +08:00
@qiumaoyuan 谢谢!~
qiumaoyuan
2019-06-11 11:40:06 +08:00
@bmos :D 不客气。我之前也是一直对自己的代码不满意。现在虽然也并不是非常满意,但起码方向是清晰的,不像之前那么没底气,写什么系统都 hold 得住,知道自己该如何继续改进。最重要是别放弃这份追求。加油。
GiantHard
2019-06-11 11:59:53 +08:00
https://m.douban.com/book/subject/1140457/ 希望这本书能对你有所帮助
whileFalse
2019-06-11 14:47:57 +08:00
@qiumaoyuan @bmos

源码相对于书本的优势是,源码提供了一整套场景,并提供该场景对应的解决方案。一套场景是很复杂的,需要多种所谓的设计模式的嵌套。书本提供招式,源码提供套路。你学了一个套路,你就能解决这个套路面临的问题。你学了一个招式,你就看什么都想用这个招式解决;你学了 30 个招式……你就不知道该用哪个。

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

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

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

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

© 2021 V2EX