第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

這個(gè)問(wèn)題是關(guān)于代碼規(guī)范或者說(shuō)代碼習(xí)慣

這個(gè)問(wèn)題是關(guān)于代碼規(guī)范或者說(shuō)代碼習(xí)慣

樓主是一名javascriptcoder,最近遇到一個(gè)問(wèn)題,是關(guān)乎代碼的規(guī)范和風(fēng)格的,需要從業(yè)在代碼領(lǐng)悟多年的大俠指點(diǎn)一二,望打通我的幾根血脈,茅舍頓開(kāi)。說(shuō)明:其實(shí)這個(gè)問(wèn)題不好表達(dá),也不好描述。我思考了幾天整理了一些問(wèn)題,大致是:思維邏輯,代碼規(guī)范,規(guī)范標(biāo)準(zhǔn)1.思維邏輯比如1+2+3....100咱們寫(xiě)一個(gè)1加到100的代碼:functionsum1(n){varn=0;for(vari=1;i
查看完整描述

2 回答

?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊

tl;dr
算法
抽象
同2
第二種看著簡(jiǎn)潔,但未必永遠(yuǎn)都最好;在本例中當(dāng)然是好的,大部分時(shí)候也應(yīng)該是除了可讀性之外都更優(yōu)于第一種的,然而即使是第一種,好程序員也不應(yīng)該寫(xiě)成那個(gè)樣子,還有改善空間。說(shuō)到可讀性方面也要看受眾:對(duì)于數(shù)學(xué)不好的的人,比如我,看第一種更容易明白。但對(duì)于數(shù)學(xué)基礎(chǔ)扎實(shí)的人,第二種應(yīng)該也沒(méi)什么障礙吧。因此,若你追求第二種寫(xiě)法,就去提高用數(shù)學(xué)解決/表達(dá)問(wèn)題的能力。這方面我很差,就不多扯了。
抽取更小粒度的方法是重構(gòu)里最基礎(chǔ)最常用的技巧,應(yīng)否抽取是要看上下文的?;旧现灰锌芍赜玫臋C(jī)會(huì),抽取出來(lái)就是OK的。你舉的例子,我明白你的意思,但由于缺少上下文,所以無(wú)法說(shuō)好與壞?,F(xiàn)實(shí)中的選擇,也是要取決于實(shí)際的代碼環(huán)境,沒(méi)有必然的規(guī)則。
第2條實(shí)際上是從一個(gè)方面體現(xiàn)了你的抽象思維能力,第3條也是類(lèi)似的——從代碼組織的層面。我覺(jué)得這方面的話題真是見(jiàn)仁見(jiàn)智,而且很多時(shí)候并不是自己決定就OK了,還得看身邊的人。
說(shuō)白了,你寫(xiě)的代碼如果只是你自己看,你寫(xiě)成什么樣都無(wú)所謂,只要它能用;如果糟糕的結(jié)構(gòu)和組織性帶來(lái)了性能和維護(hù)上的問(wèn)題,你自然會(huì)慢慢改善它——但是好代碼都不是一次寫(xiě)成的。另一方面,如果你不是只給自己看,你要考慮和團(tuán)隊(duì)之間的協(xié)作等問(wèn)題,那么代碼風(fēng)格或規(guī)范之類(lèi)的東西應(yīng)該是來(lái)自整個(gè)團(tuán)隊(duì)的共識(shí)。有時(shí)候你不得不妥協(xié)退化,或者努力學(xué)習(xí)進(jìn)步,一切都是為了讓大家能夠說(shuō)“同一個(gè)宇宙的語(yǔ)言”,否則你會(huì)很痛苦,用不了多久就會(huì)心灰意冷。
題主應(yīng)該是有受Ruby語(yǔ)言影響的人,上個(gè)月RailsConf開(kāi)場(chǎng)時(shí)DHH作的KeynotePresentation不知道你看了沒(méi)有?如果沒(méi)有,去看看吧,你要的答案里面就有:WritingSoftware-RailsConf2014byDHH
                            
查看完整回答
反對(duì) 回復(fù) 2019-03-29
?
慕森王

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊

關(guān)于第一點(diǎn),數(shù)學(xué)能力在編程上的體現(xiàn)應(yīng)該不是這個(gè)樣子的。就好比這個(gè)李白喝酒的問(wèn)題,固然可以用數(shù)學(xué)組合數(shù)之類(lèi)的來(lái)搞定,但做為程序員更應(yīng)該掌握的是動(dòng)態(tài)規(guī)劃,因?yàn)榻M合數(shù)之類(lèi)的數(shù)學(xué)技巧如果改改參數(shù)弄點(diǎn)小數(shù)點(diǎn)乃至無(wú)理數(shù)出來(lái)很容易就崩潰了。
如果說(shuō)1加到100的話,那么程序員應(yīng)該掌握的是map-reduce,而不是(1+n)*n/2,因?yàn)橹挥衜ap-reduce才能同樣適用于1000W條復(fù)雜記錄的統(tǒng)計(jì),(1+n)*n/2不行
第二點(diǎn)我覺(jué)得如果一個(gè)函數(shù)只會(huì)被用在一個(gè)地方,又給他起了個(gè)名字,那最好是有明確含義的,而且確實(shí)會(huì)需要改變他的行為的。console.log單獨(dú)封一下我覺(jué)得很好,沒(méi)啥問(wèn)題。因?yàn)镮E或者正式環(huán)境的情況下確實(shí)可能會(huì)要改這個(gè)行為
但這只是最好,并不強(qiáng)制,只要你封裝函數(shù)沒(méi)有多到影響代碼理解的程度,我覺(jué)得都OK
第三點(diǎn)我覺(jué)得不能算純粹的個(gè)人能力,應(yīng)該是團(tuán)隊(duì)的能力。團(tuán)隊(duì)內(nèi)部應(yīng)該花時(shí)間討論一套編碼規(guī)范和風(fēng)格,封裝的慣例,粒度的選擇等指導(dǎo)性原則,然后成員共同遵守并維護(hù)之。
最后我要頂一下被@oyanglulu踩的TDD。TDD對(duì)于Javascript來(lái)說(shuō)相當(dāng)重要,因?yàn)槿狈幾g和類(lèi)型安全機(jī)制,Javascript的代碼重構(gòu)尤其是公共代碼的重構(gòu)經(jīng)常伴隨著很大的風(fēng)險(xiǎn),TDD是控制這種風(fēng)險(xiǎn)從而降低重構(gòu)成本,提升代碼質(zhì)量的有力工具。
另外速讀了一下那篇描述TPP的文章,通篇在描述怎么寫(xiě)正確地TDD啊……
                            
查看完整回答
反對(duì) 回復(fù) 2019-03-29
  • 2 回答
  • 0 關(guān)注
  • 416 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)