作者mpk (小赖x)
看板Programming
标题Re: [请益] 程式该怎麽越写越好呢
时间Fri Aug 21 15:07:51 2009
其实这个真的要考虑到很多方面
要看你的好是让程式看起来很漂亮
还是要方便修改
比方说程式高手 或许别人需要花二三百行写的code
他可以不到一百行就轻易解决了
或许这样的code看来简洁有力 有大师之风
可是将来等大师脑力衰退或是其它人来接手时
会觉得看起来很吃力
相反的那二三百行完成的code修改容易
而且容易让人了解当初作者的意思
程式是写来服务人的
不是写来折磨人的
※ 引述《sorryChen (陈扬和)》之铭言:
: 我觉得要多问人..看别人的code..不然都是自己闭门造车
: 我自己花了很久的时间闭门造车 其实很多时候用更方便的语法
: 应该说要多用别人的code..就会快很多
: 另外就是要写test. 最好是unit test 其实应该是test driven programming
: 为了一时方变求快 往往导致後面更长的时间在debug..
: 只要写大一点点改code有错就可能花一两天来找 非常可怕
: 如果可以有人review 你的code那是进步最快的
: ※ 引述《yoco315 (眠月)》之铭言:
: : 我不是高手,我懂一点点程式设计,但是我可以分享一点点经验。
: : 程式设计是一门艺术,
: : 多写当然很重要,但是闭门造车狂写的话,除非是绝世天才,不然就掰了,
: : 多看大师等级的程式码绝对比自己死命写进步的快好几倍。
: : 就像音乐跟绘画,多看多接触多欣赏别人的经典,绝对是好的。
: : 但是看要看得懂,光看到程式码看不懂背後设计的精髓的话还是没用,
: : 要看懂那些东西你得先有基本的资料结构、演算法跟进阶的设计模式等功力,
: : 当然,除了理论以外,程式语言本身你也要熟捻。
: : 所以以上基本教材先念熟,这是进入高阶殿堂的钥匙。
: : 这些东西没有的话,想要进殿堂连门都没有。
: : 然後去找网路上有些「xx源码解析」,
: : 里面都会找一些经典的程式码,然後解释背後的设计理念,
: : 看懂就是你的,这个时候你对软体的结构就开始有点概念了。
: : 看不懂的话,你就去好一点的讨论版问,
: : 因为到这个程度,死大学生讨作业的烂版已经不能满足你问题的难度了。
: : 高手不少,但是既然是高手,他们对无聊的问题就一点兴趣也没有,
: : 要把他们钓出来你的问题就要够好,他们遇到好的问题就会掏心掏肺,
: : 因为他们有些人很无聊,每天都在看板,但是很少发文,因为没的发挥,
: : 难得有机会发挥的话,他们就不会放过,所以你要看这个。
: : http://catb.org/~esr/faqs/smart-questions.html
: : 当然阅读吸收很重要,但是还要多写,
: : 写没多久你就会发现开发环境很重要,选一个好的 IDE,绝对不要虐待自己。
: : 选用的时候要多看多问多评估,因为这是你写程式的时候会一直接触的东西,
: : 程式设计师需要保持快乐,不快乐的程式设计师就是没有产能的程式设计师。
: : 程式码累积一定程度之後你会发现程式码的整理也很重要,
: : 这个时候你可能会注意到有版本管理系统这种东西,
: : 当然,选用之前要多评估,烂的版本管理系统会让你大脑发烟。
: : 也许有一天你需要回头用或是看自己的程式码,
: : 你会发现干他妈的写这个程式的人是他妈的猪吗!?为什麽我一行都看不懂!?
: : 所以你需要写文件跟注解,请选一个好的文件系统。
: : 文件也可以避免别人看着你的程式码骂你是他妈的猪。
: : 而且懒惰是程式设计师的美德,如果你不想一直解释重复的问题,
: : 写好文件就是让你脱离当幼稚园老师的不二法门:「Read The Fucking Manual」
: : 搞不好你在当学生的时候就可以作到以上全部,
: : 然後不管你工作了没有,你可能会开发大型软体,
: : 我是说大型软体,一个人写不出来的那种。
: : 这个时候你会发现写软体就像是盖房子,需要工程方法,
: : 一堆程式设计师在一起没有统筹跟良好方法的话,是作不出好的大东西的,
: : 大东西可能做的出来,但是不好的大东西不叫做大程式,叫做大便,
: : 真的,因为你会看着那堆程式码整天直呼「shit!」
: : 软体工程,不过他不是大型软体才需要,
: : 你最好在越过学徒阶段之後就要抱有软体工程的概念。
: : 如果你有幸坚持到这一步,
: : 当别人问你是不是高手的时候,
: : 你也许就可以回答他说「我懂一点点程式设计」然後跟他分享你的经验了。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.131.68.5
※ 编辑: mpk 来自: 220.131.68.5 (08/21 15:10)
1F:→ adrianshum:长短与易维护与否并无一定关系. 我见过 202.155.236.82 08/21 15:11
2F:→ adrianshum:太多大量 copy and paste 改一点点的又 202.155.236.82 08/21 15:11
3F:→ adrianshum:臭又长的 code, 这些绝对是又长又难维 202.155.236.82 08/21 15:11
4F:→ adrianshum:护的垃圾... 202.155.236.82 08/21 15:11
5F:→ adrianshum:个人觉得高手才不会硬为少较少行数而用 202.155.236.82 08/21 15:12
6F:→ mpk:当然不是指又臭又长的垃圾 220.131.68.5 08/21 15:13
7F:→ adrianshum:晦涩的写法, 为了短不惜写得难明反而是 202.155.236.82 08/21 15:14
8F:→ adrianshum:新手常犯的错误 202.155.236.82 08/21 15:14
9F:→ mpk:比方说 这一行明明有两个意思在里面 220.131.68.5 08/21 15:14
10F:→ mpk:有些高手就会常以一行来解决 220.131.68.5 08/21 15:15
11F:→ adrianshum:你说这种情况反而是新手常犯比较多.. 202.155.236.82 08/21 15:17
12F:→ adrianshum:至少依我工作一路来看, 写得好的人, 常 202.155.236.82 08/21 15:17
13F:→ mpk:我就曾经解别人的bug 最後是把那行拆开来处理 220.131.68.5 08/21 15:18
14F:→ adrianshum:会为了易懂反而多写东西, 程式短通常是 202.155.236.82 08/21 15:18
15F:→ mpk:那个bug的发生是因为 整个系统被改掉而产生 220.131.68.5 08/21 15:19
16F:→ adrianshum:因为整个流程想得清楚带来的. 倒是有些 202.155.236.82 08/21 15:19
17F:→ mpk:如果当初两个意思的事情 能分开来写 220.131.68.5 08/21 15:20
18F:→ adrianshum:人写得不思长进, 就会整天在省variable 202.155.236.82 08/21 15:20
19F:→ adrianshum:名称几个字, 或 { } 这类, 但程式流程 202.155.236.82 08/21 15:21
20F:→ adrianshum:就写得左堆右砌没有细心思考... :( 202.155.236.82 08/21 15:21
21F:→ adrianshum:其实我之前说: 维护一下烂 code 也能增 202.155.236.82 08/21 15:24
22F:→ adrianshum:进功力, 其实就是像 m 君那种情况, 当 202.155.236.82 08/21 15:24
23F:→ adrianshum:看过差的 code, 感受过它为维护者带来 202.155.236.82 08/21 15:24
24F:→ adrianshum:的痛苦, 以後就会避免犯上前人的问题. 202.155.236.82 08/21 15:25
25F:→ kuninaka:去看一下国际C语言混乱代码大赛的作品XD 218.164.146.49 08/21 15:25
26F:→ mpk:对我来说能清楚表达意思的就是好code 220.131.68.5 08/21 15:25
27F:→ kuninaka:好扩充 易懂 效率好XD 218.164.146.49 08/21 15:26
28F:→ mpk:好的code能让人在精神不太好的时候 依然看得懂 220.131.68.5 08/21 15:26
29F:→ kuninaka:能在中间平衡 就看功力了 218.164.146.49 08/21 15:27
30F:→ kuninaka:除非有特殊需求 否则没必要写到没人看懂 218.164.146.49 08/21 15:27
31F:→ mpk:其实那个不是让人看不懂 而是只有本人看得懂 220.131.68.5 08/21 15:29
32F:→ mpk:就像是大师作品一样 初学者一定看不懂 220.131.68.5 08/21 15:30
33F:推 adrianshum:同意 mpk 所言. 我一句写程式(或要求别 202.155.236.82 08/21 15:30
34F:→ adrianshum:人) 最基本的就是 可读性. 效率我反而 202.155.236.82 08/21 15:30
35F:→ kuninaka:所以我才说看需求阿 218.164.146.49 08/21 15:31
36F:→ kuninaka:看你写的目的是什麽 功能是什麽 218.164.146.49 08/21 15:31
37F:→ kuninaka:山不转路转 CODE是人在写 218.164.146.49 08/21 15:31
38F:→ adrianshum:不会那麽锱铢必较, 有时用一点心, 不要 202.155.236.82 08/21 15:32
39F:→ adrianshum:写明显是很笨的低效率 code, 就已经足 202.155.236.82 08/21 15:33
40F:→ adrianshum:够了 202.155.236.82 08/21 15:33
41F:→ kuninaka:这没有一定的准则 一切依需求 218.164.146.49 08/21 15:33
42F:→ adrianshum:我觉得无论什麽需求, 可读性是不可能视 202.155.236.82 08/21 15:35
43F:→ adrianshum:若无赌的. 个人认为这些是写程式的道德 202.155.236.82 08/21 15:36
44F:→ adrianshum:问题, 实在不能用需求胡混过去... 202.155.236.82 08/21 15:36
45F:→ kuninaka:国际C语言混乱代码大赛里面就没啥可读性 218.164.146.49 08/21 15:42
46F:→ kuninaka:还有用程式码化图的 218.164.146.49 08/21 15:42
47F:→ kuninaka:道德就言重了 有些是写给自己爽的 218.164.146.49 08/21 15:44
48F:→ adrianshum:那个就是故意要写得难明吧... 那很不同 202.155.236.82 08/21 16:12
49F:→ adrianshum:吧 XDD 我自己是写爽也尽量写得让以後 202.155.236.82 08/21 16:12
50F:→ adrianshum:的自己也看得懂 202.155.236.82 08/21 16:13