自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

陳太漢:軟件隨想之編寫(xiě)出色的代碼

開(kāi)發(fā) 后端 項(xiàng)目管理
高手的代碼特點(diǎn)有很多,很多優(yōu)點(diǎn)是并存的。下面是作者認(rèn)為最重要的四點(diǎn)。詳細(xì)請(qǐng)看下文

1:寫(xiě)不易出錯(cuò)的代碼

第一次聽(tīng)說(shuō)“寫(xiě)明顯沒(méi)有什么錯(cuò)誤的代碼”時(shí),我覺(jué)得這個(gè)說(shuō)法很新鮮,讓我記憶深刻。其他的很多觀點(diǎn)聽(tīng)得我耳朵生繭,基本都是左耳進(jìn)右耳出。明顯沒(méi)有什么錯(cuò)了的代碼肯定是思路清晰、很容易理解的。而要做到這點(diǎn)很難,牛人才能寫(xiě)出牛叉的代碼,要做到這一點(diǎn)要有足夠的閱歷和實(shí)戰(zhàn),只能當(dāng)做目標(biāo)啦,哪天也和云風(fēng)一樣:今天完成了XX功能,代碼明顯沒(méi)有什么錯(cuò)誤?,F(xiàn)在還不知道明顯沒(méi)有什么錯(cuò)誤的代碼是怎么樣的,但我知道很多代碼讓我半天不知所云。如從類(lèi)名和方法名看不出其職能;變量命名讓人蛋疼;不對(duì)參數(shù)做任何驗(yàn)證;參數(shù)到處都是都是基本類(lèi)型;方法參數(shù)十幾個(gè);一個(gè)方法幾屏;不能適應(yīng)半點(diǎn)變化的方法;要么沒(méi)有注釋?zhuān)匆欢褟U話;排版稀爛。這些都是不好理解,半天找不到問(wèn)題的代碼,也是容易出錯(cuò)的代碼。

 

2:寫(xiě)容易查錯(cuò)的代碼

一直想寫(xiě)很干凈的代碼,代碼除了功能沒(méi)有多余的代碼,但是代碼必須有日志,如果代碼沒(méi)有日志,要是出錯(cuò)了,查錯(cuò)肯定很麻煩,有時(shí)候真的是無(wú)從下手,一個(gè)功能涉及到一堆的模塊,要想很快的定位錯(cuò)誤,就必須記好日志。越清楚越好,程序執(zhí)行到哪一步,當(dāng)前的狀態(tài)最好都要記下來(lái),日志不在多,清楚記錄有效的日志非常重要,過(guò)多無(wú)效的日志不方便查看,而且對(duì)于快速定位錯(cuò)誤的位置沒(méi)有任何幫助。如果日志都記錄在文本文件中,最好能寫(xiě)一個(gè)分析日志的工具。可能是我寫(xiě)的和維護(hù)的代碼太容易出錯(cuò)了,個(gè)人覺(jué)得記好日志真他媽重要。一看到日志就能知道出了什么問(wèn)題那不是一般的爽,當(dāng)然聽(tīng)說(shuō)又出問(wèn)題了讓人郁悶。我以前所在的一家公司記錄日志的方式是在很多類(lèi)中都定義一個(gè)int類(lèi)型的成員變量,每隔幾行讓它自增1,將這個(gè)值記錄起來(lái),當(dāng)出錯(cuò)了就能大致估計(jì)是哪幾行出錯(cuò)了。這種方法雖然有點(diǎn)蹩腳,代碼中到處是這個(gè)變量,但的確能幫助我們快速定位錯(cuò)誤的位置,日志的作用就是保存案發(fā)現(xiàn)場(chǎng),只有記錄犯罪分子作案的過(guò)程才能更好的抓住它。

 

3:寫(xiě)擴(kuò)展性好的代碼

“今天說(shuō)要這樣,明天說(shuō)要那樣,在上線的前一天說(shuō):還是覺(jué)得開(kāi)始的做法是最好的”。而我們程序員總是為這種人2B的想法買(mǎi)單。寫(xiě)擴(kuò)展性好的代碼真的就是不僅要滿足需求還要超越需求。我們到處可以聽(tīng)到這樣的口號(hào),當(dāng)然很多情況下是這樣的人自己都不知道需求是什么。最讓人無(wú)語(yǔ)的是菜鳥(niǎo)提需求,我來(lái)實(shí)現(xiàn)。殺了我吧。但現(xiàn)實(shí)是殺了我之前我先要滿足他的需求。當(dāng)這種需求像滔滔江水綿延不絕的襲來(lái)時(shí),我想到了四個(gè)字:生不如死。既然死不了,生活還得繼續(xù)。代碼還是要做到超越需求(你說(shuō)這世界對(duì)程序員要求怎么就這么高呢),要做到這點(diǎn)難啊,我們是幫別人實(shí)現(xiàn)夢(mèng)想的開(kāi)拓者。前途是光明的,道路是坎坷的,現(xiàn)實(shí)是殘酷的,代碼必須是擴(kuò)展性好的。當(dāng)然這里所說(shuō)都是人為因素。

 

還有就是項(xiàng)目的需求本來(lái)就是變化的,或者說(shuō)你現(xiàn)在完成的是一期,還有二期,三期......,你在做的時(shí)候就必須考慮這些情況,不要把代碼寫(xiě)死。我以前總是想:這個(gè)可能以后不會(huì)變化,可以寫(xiě)死,少一個(gè)參數(shù),少一個(gè)變量性能會(huì)更好寫(xiě)。其實(shí)性能的提升相當(dāng)于一個(gè)千萬(wàn)富翁突然多了幾毛錢(qián)。但是要是以后需求變了,你就得改寫(xiě)代碼,還得擔(dān)心是否會(huì)出問(wèn)題。有時(shí)候我就有點(diǎn)怕重構(gòu),就怕一個(gè)好的功能,被重構(gòu)壞了,當(dāng)然也和時(shí)間緊,測(cè)試不專(zhuān)業(yè)有關(guān)。寫(xiě)擴(kuò)展性好的代碼別在乎所謂的那點(diǎn)性能,那真的就是九牛一毛不值一提。一個(gè)項(xiàng)目維護(hù)時(shí)間久了,發(fā)現(xiàn)那些本來(lái)看是不變的很多都變了,而代碼也被改了很多次,每一次修改就要做一堆本來(lái)沒(méi)有必要的事情(修改代碼,寫(xiě)測(cè)試說(shuō)明,送測(cè),協(xié)調(diào)上線,而這些溝通時(shí)間也不少,真叫一個(gè)低效浪費(fèi)時(shí)間),如果能考慮到可能發(fā)生的變化,寫(xiě)好代碼,效率會(huì)高很多,這一點(diǎn)就能體現(xiàn)高手和菜鳥(niǎo)的區(qū)別。

 

4:寫(xiě)高性能的代碼

這是我一直渴望的(我當(dāng)然也會(huì)說(shuō)是我還沒(méi)有做到的)。我覺(jué)得要寫(xiě)出高效的代碼首先要非常明白你要實(shí)現(xiàn)的功能,將功能分析得很透徹,你找到了解決方案,回想你的實(shí)現(xiàn),如果你的思路非常清晰,你就大致知道每一步是否夠好,大致知道你的代碼是否高效,或者更進(jìn)一步說(shuō),你確定這就是最優(yōu)解;如果功能實(shí)現(xiàn)了,但是你對(duì)自己實(shí)現(xiàn)的功能不是很了解,記憶模糊,那肯定不是最優(yōu)解,你肯定會(huì)對(duì)自己不是很清楚的代碼不放心(我經(jīng)常是這樣),就別談性能,是否正確都待定。很多高效的代碼都很簡(jiǎn)潔,容易理解,而有些代碼總讓人看起來(lái)很郁悶,如一堆看起來(lái)類(lèi)似的代碼實(shí)現(xiàn)一個(gè)很簡(jiǎn)單的功能。用數(shù)組和一個(gè)循環(huán)經(jīng)常能將這樣的代碼簡(jiǎn)化,讓你輕松實(shí)現(xiàn)簡(jiǎn)潔容易理解的代碼,或許它不是最高效的。82法則告訴我們,我們應(yīng)該對(duì)影響系統(tǒng)性能的20%的代碼進(jìn)行優(yōu)化,而不應(yīng)對(duì)其他的80%的代碼耿耿于懷。20%影響性能的代碼應(yīng)注重性能進(jìn)行優(yōu)化,而其他80%則更多應(yīng)該考慮理解性,擴(kuò)展性等。

原文鏈接:http://www.cnblogs.com/hlxs/archive/2012/05/16/2503978.html

責(zé)任編輯:林師授 來(lái)源: 陳太漢的博客
相關(guān)推薦

2017-10-10 16:28:51

前端CSS建議

2024-10-22 08:11:15

2017-08-30 19:32:08

代碼程序員編程

2017-08-30 11:10:25

代碼

2020-08-06 00:25:38

Python代碼開(kāi)發(fā)

2012-06-27 14:12:45

CSS

2019-02-21 09:32:48

C語(yǔ)言源碼開(kāi)發(fā)

2022-02-01 16:02:03

PythonWeb服務(wù)器

2022-11-26 09:49:07

分布式鏈路追蹤技術(shù)

2015-08-04 09:27:34

Linux專(zhuān)家

2020-09-14 10:13:37

開(kāi)發(fā)者

2016-03-04 09:59:15

出色代碼編寫(xiě)

2023-10-30 18:05:55

Python類(lèi)型

2011-08-08 15:23:06

PPPOE

2024-09-09 18:18:45

2022-03-09 09:00:00

代碼技巧程序員

2012-07-16 01:20:09

代碼效率

2010-09-01 11:08:09

CSS

2020-07-15 08:17:16

代碼

2021-12-27 08:27:18

RepoGo 代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)