色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于代碼無法重用的詳細(xì)分析

m3eY_edn_china ? 2017-12-22 15:55 ? 次閱讀

剛學(xué)編程的時(shí)候有種想法,認(rèn)為難題應(yīng)該只解決一次。 但漸漸接觸多了前端開發(fā),經(jīng)常要重復(fù)編寫代碼,特別是生成頁面時(shí)。 是什么原因?qū)е铝舜a無法重用呢?

來看看大家是怎樣看待這個(gè)問題的吧,也許會有所啟發(fā)。

Aa:主要的問題在于,如果一個(gè)問題你沒有去在不同的環(huán)境下解決很多遍,你很難分得清楚,哪個(gè)部分是通用的,哪個(gè)部分是跟你當(dāng)前的環(huán)境緊密相關(guān)的。如果你什么都不懂,你做出來的代碼當(dāng)然也沒辦法很好的被重用。所以問題不可能只被解決一次,我們追求的只能是每一次解決的時(shí)候花的代價(jià)要更少,長遠(yuǎn)來講趨向于0。

Ab:因?yàn)閺?fù)用并非無代價(jià),而且代價(jià)往往還很高。

從工程上說,任何特性都不是無代價(jià)的。復(fù)用提供了解決一類問題的靈活性,而靈活性作為一種功能,同樣有代價(jià)——正如過多地使用虛函數(shù)有性能損失,而過多地使用 interface 則一定程度上降低代碼可讀性。如果構(gòu)建靈活性的基石皆有代價(jià),那么我們不可能期望靈活性可以免費(fèi)獲得。

而所有的問題解決之道本質(zhì)上都一樣:我們需要權(quán)衡每一個(gè)選擇的好處和壞處,做出對我們現(xiàn)在的項(xiàng)目最有利的方案。舉例來說:我們不會在項(xiàng)目最緊張的時(shí)候討論把業(yè)務(wù)邏輯抽取出來做一個(gè)通用的框架,原因很簡單:時(shí)間不夠用。我們也不會在討論怎么設(shè)計(jì)通用框架的時(shí)候過多地討論我們具體項(xiàng)目的邏輯,因?yàn)樽非笸ㄓ眯缘脑O(shè)計(jì)目的導(dǎo)致我們不可能完全為某一個(gè)具體的業(yè)務(wù)優(yōu)化。

所以從這個(gè)意義上來說,阻礙代碼重用的最大原因,事實(shí)上來自項(xiàng)目自身:復(fù)用代碼在絕大多數(shù)情況下,都不是一個(gè)項(xiàng)目的最終目的。對任何項(xiàng)目來說,唯一絕對存在的目的,是在指定的時(shí)間內(nèi)完成客戶給出的需求。當(dāng)短期內(nèi)完成功能的需求和復(fù)用發(fā)生沖突時(shí),理智的項(xiàng)目管理者都不會選擇將注意力放在復(fù)用上。當(dāng)然,熱衷于復(fù)用的程序員必然會以長遠(yuǎn)的好處為理由為復(fù)用辯護(hù);但正如前面的規(guī)則指出的,這依然是一個(gè)工程上的選擇問題,因而仍然需要折衷。在遇到問題時(shí),總是先倒向某一個(gè)結(jié)果再試圖解釋,這不是折衷,而是預(yù)設(shè)立場,這恰恰是工程的大忌。

至于第二個(gè)問題,回答是:是的,對任何問題只解決一次是理想狀態(tài),但重復(fù)解決三到五次問題并非十惡不赦。客戶關(guān)心的是我們能不能解決他們的問題,而不是能不能對任何問題都只解決一次。——不要把自己的需求誤以為是用戶的需求,這仍然是一個(gè)工程問題。

Ac:可復(fù)用的東西(小到函數(shù),大到框架),一定是從諸多應(yīng)用場景中抽取出來的,換句話說,一定要先有場景,在場景達(dá)到一定數(shù)量一定復(fù)雜度之后才能抽象出來可復(fù)用的部分,也就是常說的重構(gòu).一開始就追求復(fù)用性沒什么意義,浪費(fèi)時(shí)間不說,更可能假象的場景根本就不存在,或者實(shí)際情況超過想象.一些老手們經(jīng)驗(yàn)足夠豐富,之前遇到過的問題越多,在開始設(shè)計(jì)的時(shí)候就能兼顧到更多的復(fù)用場景.做開發(fā),成長的幾個(gè)階段必不可少:

1. 不做設(shè)計(jì)(新手階段,能實(shí)現(xiàn)就好)

2. 過度設(shè)計(jì)(了解的東西多了,總想追求完美)

3. 簡化設(shè)計(jì)(認(rèn)知逐漸深入,學(xué)會取舍)

4. 最優(yōu)設(shè)計(jì)(熟練掌握,知道概念適配場景)

其中23兩個(gè)狀態(tài)可能會往復(fù)多次,最終達(dá)到找到一個(gè)平衡的位置.

所以我覺得題主的狀態(tài)正是逐漸進(jìn)入過度設(shè)計(jì)的狀態(tài),想追求絕對的復(fù)用,沒什么不好,有想法就去實(shí)踐,讓結(jié)果來驗(yàn)證你的觀念,很多東西的度不是別人能教會的,是必須要親自體驗(yàn)才能了解的和掌握的.

Ad:重用的代碼,底層的好寫,上層的難寫。

底層代碼抽象的是機(jī)器,服務(wù)的是程序員。程序員就那么點(diǎn)追求,讀寫數(shù)據(jù),操作數(shù)據(jù),要快,要穩(wěn),要容易用,滿足就行了。

上層代碼抽象的是需求,服務(wù)的是用戶。用戶的需求各不相同,但每個(gè)人都覺得自己的需求特有道理,特正義。你說這個(gè)我們做不到,因?yàn)橛昧薠X lib,立馬被噴。

那么多前端庫前仆后繼,折戟沉沙,卻又層出不窮,無非是因?yàn)槟承┬枨鬂M足不了。需求總在變,庫也跟著花樣翻新,但總是差了一兩步。說到底,是什么阻止了重用?

是人心吶,是變幻莫測得人心。

人心是一個(gè) moving target,以固定的 pattern 來揣摩人心,結(jié)果就是一段想要解決十個(gè)需求,卻一個(gè)需求都解決不好的代碼。

所以,底層庫可以自頂向下的設(shè)計(jì);而面向客戶的代碼,還要以解決當(dāng)前問題為先,等到類似的問題多了,再考慮重用。不要?jiǎng)傆龅揭粋€(gè)問題,就想寫個(gè)通用的解法,這樣的往往悲劇。

長恨人心不如水,等閑平地起波瀾。

Ae:一句話介紹不清楚的,是因?yàn)閼卸琛?/p>

同樣的問題應(yīng)該只解決三次。第一次,你怎么知道這段代碼能夠重用呢?第二次,也許只是巧合?第三次,看來這確實(shí)是個(gè)重復(fù)出現(xiàn)的問題。然后你就該重構(gòu)以重用代碼了。

當(dāng)然還可能是因?yàn)槠珗?zhí)。重構(gòu)容易出一些很明顯的問題,特別是當(dāng)你使用的語言類型系統(tǒng)不夠強(qiáng)大而你又沒有足夠的測試的時(shí)候。這種時(shí)候,維護(hù)者通常的反應(yīng)是:重構(gòu)代碼首先放測試版,出了小問題就修正,只要不是很難處理的大問題一切好說。但是遇到偏執(zhí)的維護(hù)者嘛,就只好放棄了: 放棄 you-get,轉(zhuǎn)投 youtube-dl。

Af:過早優(yōu)化是萬惡之源。

編寫代碼時(shí),對“可復(fù)用”和“擴(kuò)展性”的考慮,都應(yīng)限定在一個(gè)很小的范圍內(nèi)。否則的話,在當(dāng)前版本多消耗的時(shí)間要遠(yuǎn)遠(yuǎn)大于未來復(fù)用代碼時(shí)省下的時(shí)間。

從“編程藝術(shù)”的角度來講,這種解決方法一點(diǎn)都不漂亮。每個(gè)人初學(xué)開發(fā)時(shí)都會有這種想法:要完美、要考慮周全、為了不存在的需求而編寫一堆“預(yù)備代碼”。但是,在經(jīng)歷過幾個(gè)項(xiàng)目后總結(jié)一下,就會發(fā)現(xiàn)這種事是多么浪費(fèi)時(shí)間和精力,當(dāng)初預(yù)想的需求90%沒有出現(xiàn),出現(xiàn)的那部分也和設(shè)想大相徑庭了。

Ag:編寫代碼時(shí),如果考慮今后的重用,工作量一般是只為當(dāng)前情況考慮的三倍。(參見《人月神話》)「考慮今后的重用」只能靠猜,一般都是錯(cuò)的。

讀代碼比寫代碼難,所以那些「只為當(dāng)前情況考慮的」代碼很少在問題稍稍發(fā)生變化的時(shí)候被改寫成更通用的代碼。補(bǔ)充一下,原來的第三條寫的太簡短。第三條雖然再說一個(gè)困難的現(xiàn)狀,但是它也同時(shí)說明這是正確的重用方式。就是每次寫代碼的時(shí)候,只為當(dāng)前情況考慮。準(zhǔn)確的說是只為迄今為止遇到過的情況考慮。這樣一份代碼會經(jīng)歷從專用到通用的過程。但是這個(gè)過程也是非常困難的。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3636

    瀏覽量

    93893
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4819

    瀏覽量

    68878

原文標(biāo)題:是什么阻礙了代碼的重用?

文章出處:【微信號:edn-china,微信公眾號:EDN電子技術(shù)設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    DVI接口詳細(xì)分析

    DVI接口詳細(xì)分析DVI 接口規(guī)格和定義 DVI 有DVI 1.0 和DVI 2.0 兩種標(biāo)準(zhǔn),其中 DVI 1.0 僅用了其中的一組信號傳輸信道(data0-data2 ),傳輸圖像的最高像素時(shí)鐘
    發(fā)表于 08-11 09:51

    工程師應(yīng)該掌握的20個(gè)模擬電路(詳細(xì)分析及參考答案).pdf

    工程師應(yīng)該掌握的20個(gè)模擬電路(詳細(xì)分析及參考答案).pdf
    發(fā)表于 04-07 13:28

    三極管特性曲線詳細(xì)分析

    三極管特性曲線詳細(xì)分析,特性曲線看不懂,
    發(fā)表于 06-29 16:34

    uboot代碼詳細(xì)分析

    [url=]uboot代碼詳細(xì)分析[/url]
    發(fā)表于 01-29 13:51

    詳細(xì)分析一下USB協(xié)議

    本文跟大家一起詳細(xì)分析一下USB協(xié)議。
    發(fā)表于 05-24 06:16

    詳細(xì)分析stm32f10x.h

    每日開講---學(xué)習(xí)STM32不得不看的剖析(詳細(xì)分析stm32f10x.h)摘要: 學(xué)習(xí)STM32不得不看的剖析(詳細(xì)分析stm32f10x.h)。/**這里是STM32比較重要的頭文件*******************************************
    發(fā)表于 08-05 07:44

    詳細(xì)分析了VTIM和VMIN的功能

    上一篇文章中,我們詳細(xì)分析了VTIM和VMIN的功能,《嵌入式Linux 串口編程系列2--termios的VMIN和VTIME深入理解》 也明白了這兩個(gè)參數(shù)設(shè)計(jì)的初衷和使用方法,接下來我們 就詳細(xì)
    發(fā)表于 11-05 07:09

    請問一下怎樣對stm32的啟動代碼進(jìn)行詳細(xì)分析

    請問一下怎樣對stm32的啟動代碼進(jìn)行詳細(xì)分析呢?
    發(fā)表于 11-26 07:10

    電子工程師需要掌握的20個(gè)模擬電路的詳細(xì)分析

    電子工程師需要掌握的20個(gè)模擬電路的詳細(xì)分析
    發(fā)表于 09-28 06:22

    電子工程師必須掌握的20個(gè)模擬電路詳細(xì)分析

    內(nèi)含參考答案以及詳細(xì)分析
    發(fā)表于 10-07 07:15

    電子整流器工作原理詳細(xì)分析

    電子整流器工作原理詳細(xì)分析
    發(fā)表于 02-27 10:43 ?2.5w次閱讀

    uboot1-1-6代碼詳細(xì)分析

    uboot 1-1-6版本的 代碼詳細(xì)分析
    發(fā)表于 11-02 11:02 ?25次下載

    Buck變換器原理詳細(xì)分析

    Buck變換器原理詳細(xì)分析
    發(fā)表于 09-15 17:26 ?30次下載
    Buck變換器原理<b class='flag-5'>詳細(xì)分析</b>

    物聯(lián)網(wǎng)的產(chǎn)業(yè)生態(tài)是怎樣的詳細(xì)分析概述

    物聯(lián)網(wǎng)的產(chǎn)業(yè)生態(tài)是怎樣的詳細(xì)分析概述
    的頭像 發(fā)表于 12-08 10:00 ?5183次閱讀

    正激有源鉗位的詳細(xì)分析

    正激有源鉗位的詳細(xì)分析介紹。
    發(fā)表于 06-16 16:57 ?63次下載
    主站蜘蛛池模板: 亚欧成人毛片一区二区三区四区| 久久成人免费大片| 亚洲精品另类有吗中文字幕| 欧美麻豆一精品一AV一免费| 国产亚洲精品视频在线网| freevideoshd| 永久免费无码AV国产网站| 首页 国产 亚洲 中文字幕| 男人J放进女人屁股免费观看| 精品手机在线1卡二卡3卡四卡| 国产精品久久免费视频| 成人AV精品视频| 69精品人人人人| 亚洲女人网| 亚洲xxxx动漫| 天天看高清影视在线18| 搡女人免费免费视频观看| 欧美片内射欧美美美妇| 免费看欧美xxx片| 久久人妻无码毛片A片麻豆| 茎身铃口调教| 国产在线一区二区AV视频| 国产精品一区二区AV交换| 国产成人 免费观看| 高清不卡伦理电影在线观看| max girls 大感谢祭| chinese东北老年tv视频| 92国产精品午夜免费福利视频| 在线观看免费毛片| 在线播放免费人成视频| 一区二区三区无码被窝影院| 亚洲人成电影网站在线观看| 亚洲国产精品无码中文在线| 亚洲 日韩 欧美 国产专区| 亚洲.日韩.欧美另类| 亚洲爱视频| 亚洲精品国产A久久久久久| 亚洲精品无码AV中文字幕蜜桃| 亚洲欧美激情精品一区二区| 亚洲一区二区三区高清网| 一边吃奶一边啪啪真舒服|