SAY討論區
標題:
代碼重構方向原則指導 - 程式設計
[打印本頁]
作者:
DiorCherie
時間:
2013-10-21 11:23:07
標題:
代碼重構方向原則指導 - 程式設計
2013-10-21 11:23:07 上傳
下載附件
(0 Bytes)
120139w42gi023zex.jpg
重構
是一種對軟件進行修改的行為,但它並不改變軟件的功能特徵,而是通過讓軟件程序更清晰,更簡潔和更條理來改進軟件的質量。代碼重構之於軟件,相當於結構修改之於散文。每次人們對如何對代碼進行重構的討論就像是討論如果對一篇文學作品進行修訂一樣無休無止。所有人都知道應該根據項目的自身情況來對代碼進行重構,而重構是無止境的。莫扎特從來不不對他的作品進行修訂,特羅洛普對自己作品修訂的恰到好處,大多數作家認為他們倆這樣做都是合適的,但他們的合適對於你我來說未必是合適的。
最常見的基本重構方法可以歸納為兩個方向。通過
歸納方法
將一個長的過程分解為小的可以重用的組件,和通過
內聯(inline)方法
來消除那些不夠份量的小方法。我們可以
提煉方法
來讓大量的子類共享相同的功能特徵,我們可以
下放方法
來讓只有用到這些功能的子類才知道它們的存在。重構就是爬山,通過一步一步的小的提高來逐漸的改進整體的質量,
但在重構時,我們如何知道哪種方法是上山的正確道路?
關於代碼地形學的這個問題公認的方法有兩種。去除有異味的代碼和重構成模式。如果能做到這樣,當然是很好的。就像是糾正作文里的一個語法錯誤或不恰當的比喻。如果我們可以找到這些四處隱藏的有異味的代碼,將它們重寫成整潔的,條理的,結構化的形式,何樂而不為。但這些都是特殊情況。如果沒有明顯的模式來重構,或沒有很直接的方法來去除代碼異味,那該怎麼辦呢?
這才是我們如今編程藝術的中心問題,而很少人討論這些。通常我們討論這些問題時都是羅列出更多更長的有異味的代碼模式的清單,但這並不是解決問題的方法。代碼異味應該是我們公認的不好的東西,而不是那些置之不理也無妨的事情。我們經常會說到老闆不給我們重構的機會,甚至代碼有明顯的異味,老闆們認為這是浪費時間。並不是每個人都有懂軟件的老闆。
我很吃驚為什麼只有很少的討論談到點子上。
。也許我這篇文章才說到問題關鍵處。
我的觀點,當重構沒有現成的明顯的方向時,我們可以遵循下面的原則:
當屬性、方法或類存在任何的需要復用的意向時,歸納提煉它們。
不要低估小方法對代碼整潔的作用。使用小方法能讓你節省很多筆墨。
能讓代碼長度變短的提煉都應該去提煉,包括注釋。
用switch()代替多形——即使這樣做會使代碼變長。
用封裝控制可見度。
消除依賴。
簡化構造方法——即使這樣做會使代碼變複雜。
封裝或避免條件表達式。使用guard語句,避免使用else語句。
使用常量代替魔幻數字。
不確定時,偏向使用組合而不是繼承。
不確定時,將計算操作移入到這些數據的所有者對象里,或將數據移動到執行計算操作的對象里(也就是迪米特法則(Law of Demeter))。
使用小對象,松耦合,避免大對象,高聚合。
不確定時,偏向使用遞歸而不是循環。
使用代理對象,模擬對象和輔助對象來隔離網絡,數據庫,文件和用戶接口。
不確定時,盡量在model里添加代碼,必要時才往controler添加代碼。view里添加的都應該是便捷功能和簡寫方法,但不要局限於此。
偏向使用apply, each, mapcar,而不是loop.
盡量使用新技術。
[英文原文:Hill Climbing (Wonkish) ]
附件: [120139w42gi023zex.jpg]
120139w42gi023zex.jpg
(2013-10-21 11:23:07, 0 Bytes) / 下載次數 0
http://forum.go2tutor.com/forum.php?mod=attachment&aid=NDQyNTY1fDZhMzg2NTU0fDE3ODMxOTIyMjl8MHww
作者:
ILOVEU5
時間:
2013-10-21 12:08:23
呵呵 高高實在是高~~~~
作者:
weltergf
時間:
2013-10-21 12:35:06
頂頂更健康,越頂吃的越香。
作者:
skykingdom
時間:
2013-10-21 13:10:40
不錯不錯,我喜歡看
作者:
太陽穴
時間:
2013-10-21 13:55:40
希望大家都有好運
作者:
HO0907
時間:
2013-10-21 14:43:31
知道了 不錯~~~
作者:
世界沒日
時間:
2013-10-21 15:26:01
樓主在那邊抄的呢
作者:
yan4327
時間:
2013-10-21 17:01:32
你還想說什麼啊....
作者:
kensiu123
時間:
2013-10-21 17:42:48
加油啊!!!!頂哦!!!!!
作者:
runrunscooter
時間:
2013-10-21 20:00:13
應該加分
作者:
切雞飯
時間:
2013-10-21 21:17:11
好啊,謝樓主
作者:
9394
時間:
2013-10-22 00:28:03
我又回復了
作者:
easonchan
時間:
2013-10-22 04:21:04
能告訴我去那邊分享的嗎?
作者:
juny0385
時間:
2013-10-22 05:55:31
鑒定完畢.!
作者:
十兵衛
時間:
2013-10-22 08:25:54
尼伊達是各好論壇,以後天天來
作者:
hkgordan
時間:
2013-10-22 16:15:28
沒人理我。。
作者:
曾冇權
時間:
2013-10-23 08:09:20
好帖子,要頂!
作者:
世界沒日
時間:
2013-10-24 06:54:17
這樣的貼子,不頂說不過去啊
作者:
hillmen
時間:
2013-10-25 06:50:49
我看不太到喔
作者:
plas_hoz
時間:
2013-10-26 05:03:55
要是文章和圖片能多一點,就好了
作者:
我不是傻鴨
時間:
2013-10-26 09:10:36
原來是這樣
作者:
chrity__summer
時間:
2013-10-26 18:20:23
是樓主原創嗎
作者:
~Muscle~
時間:
2013-10-27 06:14:31
這個帖不錯!!
作者:
十兵衛
時間:
2013-10-27 13:44:37
這是一個好論壇,應該要多多來
作者:
太陽穴
時間:
2013-10-28 00:16:57
說嘛1~~~想說什麼就說什麼嘛~~
作者:
nh88
時間:
2013-10-28 08:12:34
回覆,是讓樓主更有心去發帖
作者:
花家姐
時間:
2013-10-28 19:10:12
這樣的貼子,不頂說不過去啊
作者:
a_c_e06
時間:
2013-10-29 04:11:56
誰都不容易啊 ~~
作者:
正義西門慶
時間:
2013-10-29 09:00:02
有才的不在少數啊
作者:
nh88
時間:
2013-10-29 19:03:59
我快厭倦回復了
作者:
[email protected]
時間:
2013-10-30 01:51:48
你還想說什麼啊....
作者:
花家姐
時間:
2013-10-30 08:45:13
頂的就是你
作者:
Disy
時間:
2013-10-30 17:34:42
這個貼好像之前沒見過
作者:
andykom28
時間:
2013-10-31 02:03:11
圍觀來了哦
作者:
freegold
時間:
2013-10-31 07:15:24
原來是這樣
歡迎光臨 SAY討論區 (http://forum.go2tutor.com/)
Powered by Discuz! X2