談?wù)勯_(kāi)發(fā)中的規(guī)范問(wèn)題

我相信軟件開(kāi)發(fā)人員都多多少少聽(tīng)說(shuō)過(guò)「規(guī)范」一詞,如:"這段代碼很規(guī)范!","這種寫(xiě)法不遵守規(guī)范!"等,而隨著軟件行業(yè)的發(fā)展,各種「規(guī)范」也層出不窮,基礎(chǔ)點(diǎn)的有設(shè)計(jì)的規(guī)范如設(shè)計(jì)模式,特定語(yǔ)言的規(guī)范如Java開(kāi)發(fā)規(guī)范,特定領(lǐng)域的規(guī)范如電商業(yè)務(wù)開(kāi)發(fā)規(guī)范,細(xì)化點(diǎn)的有:公司的規(guī)范,項(xiàng)目組的規(guī)范,甚至個(gè)性化一點(diǎn)的有個(gè)人自己的規(guī)范,前任開(kāi)發(fā)人員留下來(lái)的規(guī)范等??赡苊總€(gè)開(kāi)發(fā)人員每天都會(huì)遇到各種與規(guī)范相關(guān)的抉擇,如:這些規(guī)范我應(yīng)不應(yīng)該遵守,是不是還有些我不知道的規(guī)范需要遵守,本篇想談的就是開(kāi)發(fā)人員應(yīng)該如何看待并遵守規(guī)范

也許有人會(huì)說(shuō),「這個(gè)還用想嗎?規(guī)范就是好的,標(biāo)準(zhǔn)的,遵守就完了,想那么多干嘛?」,對(duì)于這種看法,我覺(jué)得不能說(shuō)是完全錯(cuò),因?yàn)樗辽俦韧耆恢酪?guī)范來(lái)得好,但就像對(duì)一件事物的認(rèn)知經(jīng)常要經(jīng)歷「看山是山,看山不是山,看山還是山」這三個(gè)階段,而認(rèn)為不管三七二十一,直接遵守規(guī)范的人應(yīng)該就處于「看山是山」這個(gè)第一階段:知道有規(guī)范這么個(gè)東西,覺(jué)得大概是好的,那就應(yīng)該使勁用。但是,有心的人可能會(huì)多想一層:我為什么要遵守這些規(guī)范?遵守了規(guī)范會(huì)帶來(lái)什么好處呢?

回答這個(gè)問(wèn)題之前,我們先來(lái)看下「規(guī)范」這個(gè)詞本身的含義:

「規(guī)范」一詞本身可以指代一種「范式」或一種「標(biāo)準(zhǔn)」,表示的是對(duì)特定的事情,由前人總結(jié)出來(lái)的好的,值得借鑒的行事準(zhǔn)則

其實(shí)通俗一點(diǎn)的意思就是前人總結(jié)的經(jīng)驗(yàn)心得,即:在特定的場(chǎng)景下最好這樣做,回到為什么要遵守規(guī)范的問(wèn)題,我們不妨反過(guò)來(lái)思考,不遵循規(guī)范可以嗎?就如同剛進(jìn)入一個(gè)行業(yè),師傅把畢生經(jīng)驗(yàn)智慧傳授給你,但是你覺(jué)得太麻煩,要按自己的想法來(lái),最后的結(jié)果無(wú)外乎兩個(gè):

  1. 碰得鼻青臉腫,失敗而歸
  2. 環(huán)境變了,你還真就"亂拳打死師傅",成功了

我想,大概率第一種的可能性比較大,而對(duì)于第二種情況,要么是你運(yùn)氣比較好,要么你是不世之材,注定改變行業(yè),創(chuàng)造規(guī)則,但這兩個(gè)可能性都很小;所以說(shuō)遵守規(guī)范的好處就在于:當(dāng)我們對(duì)事物的認(rèn)知還不成熟的時(shí)候,這是成功概率最大,失敗概率最小的一種做事方式,換句話說(shuō),你是菜鳥(niǎo)的時(shí)候就按高手總結(jié)的套路來(lái),這個(gè)時(shí)候不用糾結(jié)太多,糾結(jié)也不一定有個(gè)所以然

而當(dāng)有一定的積累,有些人就會(huì)思考自己每天遵守的規(guī)范所代表的更深層次的含義,但由于還是一知半解,并未完全理清楚規(guī)范的本質(zhì),所以這個(gè)時(shí)候會(huì)比之前啥都不懂,無(wú)腦遵守要來(lái)得糾結(jié),正所謂「看山不是山」,規(guī)范還是那些規(guī)范,只是你突然有些無(wú)所適從,不知道為什么要遵守;一般這種情況就應(yīng)該多鍛煉多思考,多與高手溝通,爭(zhēng)取早日達(dá)到第三階段:「看山還是山」,這個(gè)時(shí)候?qū)⑼黄泼悦?,并且?duì)規(guī)范的表象到其背后的本質(zhì)都了然于胸,所謂「知其然,知其所以然」,這個(gè)時(shí)候設(shè)計(jì)開(kāi)發(fā)不需要僵硬的去考慮遵循什么規(guī)范,用什么設(shè)計(jì)模式,一切自然而然就呈現(xiàn)出合適的結(jié)果,即便最后發(fā)現(xiàn)出來(lái)的代碼好像不符合某些規(guī)范,大部分情況可能是這些規(guī)范不適用于你當(dāng)前的場(chǎng)景,也就是你自己已經(jīng)不知不覺(jué)針對(duì)這個(gè)場(chǎng)景創(chuàng)造出了更合適的規(guī)范

在平常的工作中,很多開(kāi)發(fā)人員都停留在第一個(gè)階段,這樣常常就導(dǎo)致一個(gè)現(xiàn)象,為了遵守規(guī)范而遵守規(guī)范,如聽(tīng)說(shuō)要「面向抽象編程」,那么好,所有的實(shí)現(xiàn)類上層都加一個(gè)接口,包括很多根本無(wú)抽象需求的實(shí)現(xiàn)類;或者聽(tīng)說(shuō)「實(shí)現(xiàn)接口比繼承父類要好」,就完全拒絕繼承;更有甚者道聽(tīng)途說(shuō)了一些適用場(chǎng)景很窄或者完全不正確的所謂規(guī)范,不加思考,直接生搬硬套,導(dǎo)致出來(lái)的代碼要么過(guò)度設(shè)計(jì),要么匪夷所思,這都是沒(méi)有思考規(guī)范的本質(zhì)帶來(lái)的后果;其實(shí)規(guī)范這個(gè)東西就像是數(shù)學(xué)里的公理和定理,它們都有自己的適用范圍,使用合適了肯定會(huì)帶來(lái)正面效果,而不合適的使用會(huì)導(dǎo)致矛盾不好的結(jié)果;比如「開(kāi)閉原則」這種就類似于一個(gè)普世的規(guī)范,你應(yīng)該盡量和自己的設(shè)計(jì)開(kāi)發(fā)思維融為一體,類似的有「遵循普遍接受的命名慣例」等,而像「枚舉比常量要好」,「基本類型優(yōu)于裝箱類型」等就屬于有一定適用范圍的規(guī)范,你應(yīng)該理解其背后的原理,再結(jié)合當(dāng)前場(chǎng)景判斷是否應(yīng)該遵守

說(shuō)一千道一萬(wàn),規(guī)范是死的,需求是活的,專業(yè)的軟件開(kāi)發(fā)人員應(yīng)該盡量思考規(guī)范背后的本質(zhì),這樣方可兵來(lái)將擋水來(lái)土掩,反之若一味固守一套死規(guī)則,不知也不會(huì)變通,那就永遠(yuǎn)只能處于初級(jí)階段,無(wú)法走得更遠(yuǎn)!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容