新聞資訊

營銷知識

首頁> 營銷知識

不要過度設計(jì)你(nǐ)的網站(zhàn)

發布時(shí)間(jiān) :2018-07-14 16:08

目的:防止設計(jì)中出現複雜的解決方案。
适用情形:适用于任何項目,所有(yǒu)大(dà)型的或複雜的系統和(hé)項目都應該采用該原則。
應用方式:讓同行(xíng)來(lái)檢查解決方案是否好理(lǐ)解,抵制(zhì)過度設計(jì)的強烈欲望。
應用理(lǐ)由:複雜的解決方案實施成本高(gāo),而且會(huì)産生(shēng)大(dà)量長期成本。要點:過度複雜的系統會(huì)限制(zhì)擴展能力。簡單的系統更容易維護和(hé)擴展,且成本更低(dī)。
維基百科解釋說,過度設計(jì)分為(wèi)兩大(dà)類。一類是指設計(jì)與實現超出了有(yǒu)用需求的産品。出于完整性的考慮,我們隻簡單地討(tǎo)論一下這個(gè)問題。相對于第二類問題來(lái)說,這類問題對可(kě)擴展性的影(yǐng)響較小(xiǎo)。過度設計(jì)的另一類問題指過于複雜的産品。如前所述,我們最關心的是第二類問題對可(kě)擴展性的影(yǐng)響。不過,還(hái)是先來(lái)了解一下第一個(gè)問題吧(ba)。 
要解釋過度設計(jì)的第一類問題,即超出産品有(yǒu)用需求的問題,就要先搞清楚楚“有(yǒu)用的”這個(gè)術(shù)語的含義,這個(gè)術(shù)語在這裏表示的隻是“能夠伸用”。例如。為(wèi)家(jiā)庭住房(fáng)設計(jì)一種空(kōng)調,能夠在室外溫度為(wèi)0開(kāi)時(shí)把整個(gè)房(fáng)子的溫度加熱到300華氏度,這毫無意義,純屬浪費,我們隻需要一個(gè)能夠在室外溫度為(wèi)-20華氏度時(shí)把房(fáng)子加熱到舒适溫度的産品。這種過度設計(jì)會(huì)産生(shēng)過度的成本,其中開(kāi)發的成本會(huì)更高(gāo),實施該方案的硬件和(hé)軟件成本也會(huì)更高(gāo)。如果研發這種過度設計(jì)系統的時(shí)間(jiān)比研發有(yǒu)用系統的時(shí)間(jiān)更長,還(hái)可(kě)能拖延産品的發布,對公司造成進一步的影(yǐng)響。成本高(gāo),利潤就低(dī)。研發時(shí)間(jiān)長,收入或收益就會(huì)被延遲,所有(yǒu)這些(xiē)成本都會(huì)影(yǐng)響到利益相關者。範圍蔓延,或者最初的産品定義和(hé)最初的産品發布之間(jiān)的範圍差異,是過度設計(jì)的一種表現。
說個(gè)更接近我們工作(zuò)的例子,是開(kāi)發一個(gè)員工打卡系統,這個(gè)系統能夠處理(lǐ)的員工數(shù)量是整個(gè)地球上(shàng)人(rén)數(shù)的100倍。在這個(gè)軟件的使用期限內(nèi),地球上(shàng)的人(rén)口升至100倍的可(kě)能性是微乎其微的,而所有(yǒu)人(rén)都為(wèi)一家(jiā)公司工作(zuò)的可(kě)能性則更小(xiǎo)。我們當然想讓構建的系統滿足客戶需求但(dàn)也不想浪費時(shí)間(jiān)來(lái)實現和(hé)部署遠遠超出需求的系統。
過度設計(jì)的第二類表現是使系統過度複雜,或者用複雜的方式來(lái)實現它。簡而言之,就是要花(huā)費過大(dà)的力氣去完成一項工作(zuò),或者是讓用戶花(huā)費過大(dà)的力氣去完成一項任務,或者是讓程序員花(huā)費過大(dà)的力氣去理(lǐ)解一個(gè)功能。讓我們來(lái)逐一分析過度複雜的系統的這三種情況。
什麽是花(huā)費過大(dà)的力氣去完成一項工作(zuò)呢?現實世界有(yǒu)最簡單的例子。假設你(nǐ)讓某人(rén)去雜貨店(diàn)買東西,你(nǐ)告訴他,店(diàn)裏面的所有(yǒu)商品都拿(ná)一個(gè),排隊結賬時(shí)給你(nǐ)打電(diàn)話(huà)。等他打電(diàn)話(huà)給你(nǐ)時(shí),你(nǐ)再告訴他到底想要哪幾個(gè),讓他從所拿(ná)的無數(shù)籃商品中選出來(lái),然後把其他商品都倒在地上(shàng)。你(nǐ)一定會(huì)說:“别開(kāi)玩笑了。”可(kě)是,你(nǐ)在自己的代碼中用過select(大(dà))schema_nane.tab1e_name這樣的SQL語句,隻是為(wèi)了從返回的集合中找出自己想要的結果嗎?我們這個(gè)雜貨店(diàn)的例子,和(hé)上(shàng)述的se1ect(*)正是異曲同工。在你(nǐ)的代碼中,有(yǒu)幾個(gè)條件語句是處理(lǐ)個(gè)别情況的,它們是按照什麽順序執行(xíng)的?是不是最可(kě)能發生(shēng)的情況最先執行(xíng)?你(nǐ)是不是經常剛查詢完一個(gè)結果,又重複查詢一次?是不是經常剛顯示了HML面,這種情況随處可(kě)見,卻又經常被忽視(shì)。
什麽是讓一位用戶花(huā)費過大(dà)的力氣去完成一項任務呢?答(dá)案非常簡單。在許多(duō)情況下,少(shǎo)就是多(duō)。為(wèi)追求系統的靈活性,我們總是想給它硬加上(shàng)盡可(kě)能多(duō)的奇怪功能。但(dàn)生(shēng)活的情趣并不總在于多(duō)種多(duō)樣。許多(duō)時(shí)候,用戶隻是想無幹擾地盡可(kě)能快地從A到達B。如果你(nǐ)的市場(chǎng)中有(yǒu)99%的用戶不需要把日志(zhì)文件存成pdf文件,那(nà)麽就不要構建一個(gè)提示框詢問他們是否想把日志(zhì)文件保存成pdf文件。如果你(nǐ)的用戶想把.wav文件轉換成MP3文件,那(nà)麽他們已經不在乎損失精度了,所以不必再提示他們轉換成無損壓縮的FLAC文件,那(nà)樣隻會(huì)幹擾他們。
最後一種情況,就是軟件複雜得(de)讓其他程序員難以理(lǐ)解。創建複雜的代碼讓他人(rén)難以理(lǐ)解曾經非常流行(xíng)(還(hái)有(yǒu)過比賽)。有(yǒu)時(shí),代碼寫得(de)複雜,是為(wèi)了讓它比一般程序員所開(kāi)發的代碼運行(xíng)更快。而更多(duō)的情況是代碼的複雜度(就其理(lǐ)解的難度而言)成了程序員才華的象征,或者說是功夫高(gāo)低(dī)的象征。那(nà)些(xiē)開(kāi)發的代碼能讓做(zuò)代碼檢查的高(gāo)級開(kāi)發人(rén)員欲苦無淚的人(rén)反而頗受推崇。複雜度成了智慧的牢籠,編程極客們會(huì)在公司內(nèi)部争強好勝。對于樂此不疲的人(rén)來(lái)說,這是很(hěn)好的比賽,但(dàn)對于公司和(hé)股東來(lái)說,則要為(wèi)一場(chǎng)無人(rén)關心的牢籠大(dà)賽買單。對于那(nà)些(xiē)仍然沉浸于這場(chǎng)極客盛宴的人(rén),如果不想損害利益相關者的利益,又想真刀真槍地拼一場(chǎng),那(nà)建議你(nǐ)參加國際混淆C代碼競賽。
我們都應該努力去寫讓每個(gè)人(rén)都能理(lǐ)解的代碼。衡量一個(gè)偉大(dà)程序員的真正标準,是他能夠多(duō)快把一個(gè)複雜的問題簡化,多(duō)快能開(kāi)發出一個(gè)既容易理(lǐ)解,又容易維護的解決方案。容易執行(xíng)的解決方案意味着一般程序員就可(kě)以快速地掌握系統,為(wèi)它提供支持。容易理(lǐ)解的解決方案則意味着在查找問題時(shí)能夠把系統恢複到正常工作(zuò)狀态。容易執行(xíng)的解決方案可(kě)以提高(gāo)公司和(hé)解決方案的可(kě)擴展性。
要測試系統是否太複雜,一個(gè)很(hěn)好的方法是讓負責解決複雜問題的程序員把他的解決方案陳述給公司內(nèi)的一組程序員。這組程序員應該代表公司內(nèi)不同的編碼水(shuǐ)平,不同的工作(zuò)年限(加入這一條,是因為(wèi)可(kě)能有(yǒu)些(xiē)有(yǒu)經驗的程序員在公司的工作(zuò)經驗不多(duō)。要通(tōng)過這一測試,需要這組程序員中的每一位都能夠輕松理(lǐ)解該解決方案,能夠在無幫助的情況下向他人(rén)描述它,而不隻是知道(dào)它。如果這組程序員中的任何一位不能理(lǐ)解該解決方案,那(nà)麽就要小(xiǎo)組討(tǎo)論該系統是不是過度複雜了。
過度的網站(zhàn)設計(jì)是可(kě)擴展性的一個(gè)敵人(rén)。開(kāi)發一個(gè)超出有(yǒu)用需求的解決方案,既浪費金錢(qián)又浪費時(shí)間(jiān)。此外,還(hái)可(kě)能進一步步浪費處理(lǐ)資源,增加擴展成本,限制(zhì)系統的整體(tǐ)擴展能力(即系統能被擴展到什麽程度)。構建過度複雜的解決方案會(huì)造成類似的後果。運行(xíng)吃(chī)力的系統會(huì)增加成本,限制(zhì)最終發展規模。讓用戶用起來(lái)吃(chī)力的系統,會(huì)放慢吸引客戶的速度,從而限制(zhì)業務增長的速度。太複雜以至于難以理(lǐ)解的系統,則會(huì)扼制(zhì)司的生(shēng)産力,讓你(nǐ)無從增加程序員,或者難以給系統增加功能。

186-5120-8731
企業網站(zhàn)咨詢
SEO優化推廣
微信小(xiǎo)程序咨詢
微信公衆号咨詢
店(diàn)鋪裝修運營咨詢
商城平台咨詢
其他業務咨詢
首頁
電(diàn)話(huà)
導航
聯系