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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

寫代碼不難,難的是寫高質量代碼!

5RJg_mcuworld ? 來源:lq ? 2019-01-22 11:13 ? 次閱讀

作為程序員,要有“刨根問底”的精神:知其然,更要知其所以然!

以下為譯文:

在如今這個時代,每個人都在努力提升資源能力。在Web應用程序方面,我們有Spring、Play和Struts等框架,這些框架可以幫助我們構建具有可擴展性和可管理性的軟件。這些框架提供了許多樣板代碼,所以你無需在應用程序中再寫這些代碼。

不過,寫代碼并不難,但是寫高質量的代碼卻很難。

作為開發人員,在日常工作中我們也應該遵循相同的基本原則。我們應該將工作完成得盡善盡美,不能將任何錯誤留給客戶。很多時候,迫于壓力開發人員會編寫管理不善或復雜的代碼。為了編寫高質量的代碼,有一條經驗法則是寫出的代碼應該讓所有人都能當作短語一樣閱讀。

寫代碼時應當牢記的事情

多想少寫,在寫之前深思熟慮;

遵循最佳實踐;

使用SonarQube等代碼質量工具,或者如果使用eclipse或IntelliJ等IDE的話,也可以使用Sonar插件(SonarLint),這些都可以輕松入手;

盡量編寫通用的代碼;

不要自行創建API中存在的isEmpty、isNull或isNotNull等方法,許多有名的開源庫(比如Apache)都提供了定義良好的方法;

使用IDE的重構工具,并了解其快捷方式:

publicvoiddoSomething(){Line1....Line2....Line3....Line4....Line5....}

如果你想抽取1-4并創建一個單獨的方法。常見的做法是:復制,創建一個方法,然后將復制的行粘貼到該方法中;總共需要3-4步。在做這樣的任務時,你可以使用IDE的重構工具(而無需復制粘貼)。

重構工具有許多重要的功能,包括:

將一段代碼從一個位置移動到另一個位置;

從其他地方抽取一段代碼,然后創建一個方法(如上例所示);

重命名文件,變量或方法,注意,如果你手動做這個任務,那么就需要手動修改所有的地方;

盡量編寫正確的測試用例(可選)。

編寫類

類名應該是名詞,每個單詞的首字母都應該大寫;

在編寫新類之前,搜索項目中是否存在這樣的文件。很多時候,我們會發現我們以不同的名稱創建了相同的文件,這會誤導項目和其他開發人員。例如:

通過類名完整地描述的功能;

使用適當的訪問修飾符;

文件的打包也非常重要,把正確的文件放在正確的地方,不要把常量文件放在util包等錯誤的地方,正確的地方應該是常量或元數據。

編寫方法

方法是動詞,所以名稱應該采用駝峰式命名法,例如doWhatToDo(),而非doWHatTODO();

一個方法不應該超過30行,如果超過30行則說明過于復雜;

在定義方法之前認真考慮,方法應該具有某些含義,或者應該為特定的任務服務,例如createPerson或sendMail;

一個方法不應該同時執行多個任務,如果方法名為createPerson,那么就應該只創建一個人,不應該再做別的任務。很多人會這樣做:

publicLongcreatePerson(PersonVOpersonVO){1.Appointmentappointment=tryingtogettinganappointmentfromDB.2.thenperformingifelseovertheresultofappointment.....14.thenupdatingsomethingonthebasisofsomecondition.15.thenfinallycreatingperson.}

很多時候方法都超過了這個限制,開發人員在一個方法中編寫100-300行代碼,最后只會讓代碼面目可憎且難以理解。

引發的問題包括:

無法理解代碼流;

調試問題;

測試問題;

解決一個bug需要很長時間。

解決方法:

將其他任務轉移到別的方法中;

提取方法中的有效代碼,然后調用其他方法。

所以,這段代碼應該像下面這樣:

publicLongcreatePerson(PersonVOpersonVO){appoitnmentValidation();updatingSomething();creatingpersoncode;}

編寫變量

變量名應該采用駝峰式命名法,例如isTrue、userService、personName以及localServiceRerpository;

不應該使用一個字符的名稱,除非在臨時情況下;

不應該以_和$開頭;

在定義變量名之前認真考慮;

不要使用大寫。

編寫常量

盡量通過類來定義常量,而不是接口;

定義final類;

在常量類中創建一個私有構造函數,確保沒人可以創建實例;

如果你整個服務都會使用唯一的一個常量文件,那么最好通過注釋來分段,如下所示:

/****Cache****/publicstaticfinalStringCACHE_NAME="personCache";/****Attributes****/publicstaticfinalStringNAME="name";publicstaticfinalStringMOBILE="mobile";/****Configuration****/publicstaticfinalStringAPP_NAME="PersonDemo";publicstaticfinalStringAPP_VERSION="1.0";

如此可以方便搜索整個文件。

常量名應該非常具體,應該全部使用大寫,并利用下劃線來分割,例如APP_NAME,而非appName。

編寫邏輯

避免使用多個嵌套的If else,這會增加代碼的循環復雜度;

盡量編寫通用的代碼;

不要僅僅利用log來記錄異常,應當拋出正確的消息或異常,而不是只輸出異常。

什么是“通用代碼”?

在很多項目重構的時候,我們都會發現一些本不應該存在的冗余代碼。

假設我們有一個郵件草稿的POJO類,它的成員會在發送郵件時被使用。那么,發送郵件所需的步驟有哪些?

我們需要通過設置數據來創建一個POJO對象;

我們需要編寫發送郵件的代碼。

那么最終的代碼行數為:

對象創建——1行:

MailDraftmailDraft=newMailDraft();

設置數據——3行:

mailDraft.setTo();mailDraft.setBody();mailDraft.setMessage();

發送郵件的邏輯至少需要4行,所以總共有9-10行代碼。

如果我們需要在多重條件或事件中發送郵件,那么情況會怎樣?我們需要相同的邏輯,而且通常我們會發現開發人員在每個地方都重復了相同的步驟,并創建一個擁有某些特定代碼的方法,于是冗余開始層層疊加。

但是,如果我們將創建草稿和發送郵件的代碼提出來,放到另一個方法中,那么每個方法都可以調用這段代碼,于是每個方法都省卻了10行代碼,我們就無需一次又一次地重復這段代碼了。

不要匆匆忙忙地趕代碼。如果情非得已,那么也要記得加注釋:

TODO:需要重構。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7134

    瀏覽量

    89420
  • 代碼
    +關注

    關注

    30

    文章

    4823

    瀏覽量

    68914
  • 應用程序
    +關注

    關注

    38

    文章

    3292

    瀏覽量

    57855

原文標題:寫高質量的代碼,永不言晚!

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    分享一些優秀的verilog代碼 高質量verilog代碼的六要素

    高質量的verilog代碼至少需要包含以下幾個要素:可讀性、功能、性能、標準化、穩定性、可定位。
    的頭像 發表于 07-18 10:09 ?1220次閱讀
    分享一些優秀的verilog<b class='flag-5'>代碼</b> <b class='flag-5'>高質量</b>verilog<b class='flag-5'>代碼</b>的六要素

    何為高質量代碼?如何寫出高質量代碼

    懂得“數據結構與算法” 寫出高效的代碼,懂得“設計模式”寫出高質量代碼。
    發表于 08-02 09:44 ?873次閱讀
    何為<b class='flag-5'>高質量</b>的<b class='flag-5'>代碼</b>?如何寫出<b class='flag-5'>高質量</b><b class='flag-5'>代碼</b>?

    編寫高質量C語言代碼

    編寫高質量C語言代碼 編寫高質量C語言代碼 編寫高質量C語言代碼
    發表于 07-31 17:47

    高質量c語言高級教程

    。這些軟件頻頻獲獎,有一個軟件獲得首屆中國大學生電腦大賽軟高質量 C++/C 編程指南,v 1.0 2001 Page 7 of 101件展示一等獎。在 1995 年開發的一套圖形軟件庫到 2000
    發表于 01-07 11:16

    高質量編程

    干貨,《495個C語言問題》、《華為內部程序設計編碼規范》、《C語言:陷阱和缺陷》、《高質量C編程[林銳]》
    發表于 02-27 19:39

    10個嵌入式小技巧 教你寫出高質量代碼!

    由于物聯網的發展,現在沒人不知道嵌入式系統了,加上身邊也有很多嵌入式的設備,所以這也讓大家開始都轉入到嵌入式門下,那么因為嵌入式畢竟是技術,所以下面也來給大家介紹下10個嵌入式技巧,教你怎么高質量
    發表于 12-20 16:19

    高質量代碼的設計特點

    高質量的設計往往有一些共同的特點。如果你能達到這些對象,那么可以認為你的設計也是非常成功的。有些對象是互相矛盾的。但是這是設計的挑戰所在,在相互矛盾的對象之間做出
    發表于 07-19 15:15 ?0次下載

    微軟四大名著之編程精粹:編寫高質量C語言代碼

    c語言有些比較冗雜,要想編出一些高質量的c語言代碼,需要思想來指導,才能更好寫代碼。
    發表于 04-20 10:50 ?0次下載

    怎樣來為armc代碼

    怎樣來為armc代碼
    發表于 10-30 10:32 ?12次下載
    怎樣來為arm<b class='flag-5'>寫</b>c<b class='flag-5'>代碼</b>

    高質量Verilog代碼有什么特點

    高質量的verilog代碼主要包含以下幾個要素:可讀性、功能、性能、標準化、穩定性、可定位。
    發表于 03-30 10:12 ?1967次閱讀
    <b class='flag-5'>高質量</b>Verilog<b class='flag-5'>代碼</b>有什么特點

    如何編寫高質量的Javascript代碼

    這篇文章不僅僅從代碼本身來考慮如何優化編碼,也從代碼的設計階段來考慮,包括書寫API文檔,同事的review,使用JSLint。這些習慣都能幫助你編寫更加高質量的、更易于理解的、可維護的代碼
    發表于 01-21 14:28 ?7次下載
    如何編寫<b class='flag-5'>高質量</b>的Javascript<b class='flag-5'>代碼</b>

    程序員是怎么代碼的?常見問詳解

    騰訊程序員是怎么代碼的?,代碼,插件,sql,調用,編程
    的頭像 發表于 02-20 15:38 ?9759次閱讀

    qt用C++的2048小游戲源代碼

    qt用C++的2048小游戲源代碼
    發表于 09-27 11:48 ?1次下載

    阿里云內部全面推行AI代碼

    阿里云正在內部全面推行 AI 編程,使用通義靈碼輔助程序員代碼、讀代碼、查 BUG、優化代碼等。
    的頭像 發表于 04-07 09:22 ?588次閱讀

    如何提升代碼質量與效率的秘訣

    提高編程能力其實沒有捷徑,最佳方式就是多代碼。 不過,除了大量代碼,提升編程能力還需要大量閱讀別人
    的頭像 發表于 04-28 14:53 ?434次閱讀
    如何提升<b class='flag-5'>代碼</b><b class='flag-5'>質量</b>與效率的秘訣
    主站蜘蛛池模板: 久久综合给合久久狠狠狠… | 黄色三级视频在线观看 | 日韩欧美一区二区三区在线视频 | 久久偷拍人 | 欧洲最强rapper潮水喷视频 | 亚洲欧美自拍明星换脸 | 9277在线观看资源 | 国产午夜精品一区二区三区 | 农村脱精光一级 | 亚洲免费一区 | 亚洲一级电影 | 色橹橹欧美在线观看视频高清 | 国产精品婷婷五月久久久久 | 国产精品成人久久久久A伋 国产精品成人观看视频免费 | 亚洲不卡一卡2卡三卡4卡5卡 | 99热久久视频只有精品6 | 久久草福利自拍视频在线观看 | 日韩精品久久日日躁夜夜躁影视 | 99国产精品欲AV蜜桃臀麻豆 | 精品无码国产自产在线观看 | 媚药调教被撑到合不拢h | 毛片视频大全 | 亚洲一区在线视频观看 | 性欧美videosex18嫩 | 不卡一区二区高清观看视频 | 三级黄网站| 98久久无码一区人妻A片蜜 | 美美哒免费影视8 | 亚洲成人三级 | 美女扒开腿让男人桶个爽 | 漂亮的保姆3集电影免费观看中文 | 亚洲午夜久久久久中文字幕 | 很黄很色60分钟在线观看 | 97精品视频在线观看 | 色欲色香天天天综合 | 午夜福利在线观看6080 | 国产精品亚洲污污网站入口 | 国产亚洲精品线观看不卡 | 久久国产乱子伦精品免费M 久久国产露脸老熟女熟69 | 啊…嗯啊好深男男小黄文 | 国产午夜精品理论片 |