色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美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

    文章

    7067

    瀏覽量

    89108
  • 代碼
    +關注

    關注

    30

    文章

    4791

    瀏覽量

    68685
  • 應用程序
    +關注

    關注

    37

    文章

    3277

    瀏覽量

    57734

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

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

收藏 人收藏

    評論

    相關推薦

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

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

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

    懂得“數據結構與算法” 寫出高效的代碼,懂得“設計模式”寫出高質量代碼
    發表于 08-02 09:44 ?850次閱讀
    何為<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 ?1952次閱讀
    <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 ?9710次閱讀

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

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

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

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

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

    提高編程能力其實沒有捷徑,最佳方式就是多代碼。 不過,除了大量代碼,提升編程能力還需要大量閱讀別人
    的頭像 發表于 04-28 14:53 ?405次閱讀
    如何提升<b class='flag-5'>代碼</b><b class='flag-5'>質量</b>與效率的秘訣
    主站蜘蛛池模板: 九九视频在线观看视频6| 欧美成人精品高清在线观看| 国产精品亚洲一区二区三区久久| 国产3级在线观看| 国产人妻人伦精品A区| 和美女啪啪啪动态图| 久久黄色免费网站| 嗯别插太快好深再深点| 日本护士喷水| 性色欲情网站IWWW九文堂| 亚洲日本天堂在线| 91亚洲 欧美 国产 制服 动漫| WWW国产亚洲精品久久麻豆| 色欲AV久久综合人妻蜜桃| 午夜福利免费院| 亚洲午夜精品一区二区公牛电影院| 在线精品视频成人网| 啊好深啊别拔就射在里面| 国产精品久久久久久AV免费不卡 | 丝瓜涩涩屋黄瓜香蕉丝瓜| 亚洲va久久久久| 中文字幕 日韩 无码 在线| 被免费网站在线视频| 国产香蕉尹人视频在线| 巨污全肉np一女多男| 人妻无码AV中文系列| 亚洲国产精品嫩草影院| 中国女人精69xxxxxx视频| 成年女人免费播放影院| 韩国甜性涩爱| 欧美日韩在线亚洲一| 亚洲国产成人精品无码区99| 95国产精品人妻无码久| 国产精品久久免费视频| 老师机影院| 午夜AV国产欧美亚洲高清在线| 中文字幕日本一区| 国产成人精视频在线观看免费| 久久久久久久久a免费| 色婷婷国产精品视频一区二区| 在线播放免费人成毛片视频|