怎樣算是“風(fēng)騷”的代碼?
網(wǎng)友解答: 這個問題很有意思。先從好的代碼講起,我認為好的代碼從功能性上要具備以下特點:一是代碼要實現(xiàn)功能,沒有BUG。這個是最基本的,你再“風(fēng)騷”,代碼沒有實現(xiàn)功能,BUG又多,那不行
這個問題很有意思。先從好的代碼講起,我認為好的代碼從功能性上要具備以下特點:
一是代碼要實現(xiàn)功能,沒有BUG。這個是最基本的,你再“風(fēng)騷”,代碼沒有實現(xiàn)功能,BUG又多,那不行的。
三是代碼要結(jié)構(gòu)清晰,注釋要明白。我經(jīng)常去看微軟技術(shù)專家在寫代碼解決問題的文章,思路很清晰,代碼注釋的很明白。寫注釋會讓人很輕松閱讀,并且在大公司同事之間合作是非常必要的。
那么“風(fēng)騷”的代碼在上述基礎(chǔ)上就是要精簡。你可能實現(xiàn)一個功能,需要20行代碼,“風(fēng)騷”的代碼一行就夠了。我舉個例子,剛學(xué)編程的人都做過的一道練習(xí)題,計算1到100之間的和。
舉個前端JS程序員的寫法:
var i=0,sum=eval('0'+new Array(101).join('+(++i)'));
//注釋:通過new Array(n)我們可以創(chuàng)建n個空元素,同時也就在n個元素中間存在n-1個空白,通過join,我們可以將一些東西放在這些空白中間從而組成我們需要的特殊串,這個特點可以使我不通過循環(huán)就可以很容易的實現(xiàn)一個“有規(guī)律元素的連續(xù)運算”。
把上面的JavaScript代碼改成VBS,就是VBS練習(xí)題所謂的骨灰級解法:
Dim a(101):Execute(Join(a,"s=s+i:i=i+1:")):MsgBox s
我就問你這兩個代碼“風(fēng)騷”不?有不服的,就在評論里寫出別的程序里計算1到100的和的“風(fēng)騷”代碼。
網(wǎng)友解答:關(guān)于怎樣算是“風(fēng)騷”的代碼,我來分享一個親身經(jīng)歷。
有一次修改一個C++項目代碼。其中有一個類A,派生自一個第三方的類B。我在閱讀A類的代碼時,看到一個方法調(diào)用了一個A類里不存在的方法,推測應(yīng)該試父類的公有(public)方法,,于是打開B類的頭文件查看定義。
此時讓人百思不得其姐的事情發(fā)生了,那個B類方法居然是私有的(private)。我反復(fù)確認,那個私有方法確實沒有任何其它重載,也沒有友元之類的東西,然而編譯確實是可以通過的,執(zhí)行也一切正常,甚至連個警告都沒有...
這讓我對自己的C++知識產(chǎn)生了深切的懷疑,難道我對私有方法的理解是錯誤的??。‰m然C++寫的不多,但也不可能會搞不清這么基礎(chǔ)的概念吧~~
幾個小時后,我赫然在A類的頭文件里看到如下幾行讓我震驚的代碼:
我滴個神哪~~居然使用宏定義,硬生生把private關(guān)鍵字給重定義成了public。這幾行代碼可以說是非常"風(fēng)騷",所有私有方法現(xiàn)在可以隨意蹂躪了! 大神,請收下我的膝蓋吧!
其實作為程序員,大家多少都知道有類似的技巧存在,只是作為茶余飯后的談資,但第一次在生產(chǎn)環(huán)境的代碼中看到,真的是覺得難以置信。