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

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

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

從編寫代碼習(xí)慣談工程師風(fēng)格

工程師人生 ? 來源:博客園 ? 作者:等你歸去來 ? 2021-01-15 10:11 ? 次閱讀

引語:代碼風(fēng)格,是一個(gè)工程師長期以來養(yǎng)成的一些編寫代碼的習(xí)慣,其實(shí)并無絕對的好壞之分!但是,基本上可以這么說,一個(gè)有很好的代碼風(fēng)格的人,技術(shù)水平絕不會(huì)太低;反之,一個(gè)沒有好的代碼風(fēng)格的人,技術(shù)水平也不會(huì)高到哪里去,即使是他已經(jīng)有很多年的編程經(jīng)驗(yàn)!因?yàn)?,在業(yè)界有一個(gè)不成文的現(xiàn)象,那就是每個(gè)工程師都有一個(gè)追求技術(shù)提升,追求完美的夢!結(jié)果就是,隨著個(gè)人技術(shù)水平的提高,風(fēng)格也越來越成熟,而這個(gè)風(fēng)格就體現(xiàn)著其個(gè)人水平!

本文以PHP語言的某微視角,說幾個(gè)代碼風(fēng)格上的事,同理可推至其他語言,其他技術(shù),甚至其他通用道理!

本文將以從面到線再到點(diǎn)的過程,講述一些個(gè)人心得。僅供大家娛樂參考,如有不對,請多多指教。如有雷同,不勝榮幸!

本文就以一個(gè)虛擬項(xiàng)目作為線索吧!

1、面:所謂面,就是面對一個(gè)項(xiàng)目擺在眼前,怎樣去部署大方向的問題的思路!準(zhǔn)確的說,這里并不是真正地體現(xiàn)一個(gè)代碼風(fēng)格,而是一個(gè)做事風(fēng)格!

風(fēng)格1:1. 我需要需求書,書上怎么寫,我就怎么做;2. 如果有一些未知的技術(shù),盡量讓需求上做一些讓步,以減少開發(fā)難度;3. 找個(gè)牛逼的人,帶著自己或其他人一起做;4. 時(shí)間是多久?

風(fēng)格2:1. 我需要需求書,書上寫的東西,清楚嗎?有什么可要可不要的東西,有副作用嗎?2. 大概需要什么樣的輔助工具,在哪里可能會(huì)得到這些東西?3. 我怎樣組建自己的技術(shù)團(tuán)隊(duì)?4. 時(shí)間是多久?5. 后期可能會(huì)有什么樣的擴(kuò)展?

2、線:所謂線,可以理解為流水線吧。就是怎樣去完成這么一個(gè)計(jì)劃,怎樣調(diào)動(dòng)生產(chǎn)?

風(fēng)格1:1. 設(shè)計(jì)數(shù)據(jù)庫; 2. 選擇代碼框架;3. 編碼;

風(fēng)格2:1. 設(shè)計(jì)服務(wù)架構(gòu);2. 模塊細(xì)化;3. 設(shè)計(jì)數(shù)據(jù)庫; 4. 選擇代碼框架;5. 編碼;

3、 點(diǎn):所謂點(diǎn),其實(shí)才這里說的真正的代碼風(fēng)格,將著重說明一些。

風(fēng)格1:任性,隨意而為,沒有規(guī)則!

風(fēng)格2:著重講解!

3.1. 不一定非要使用現(xiàn)有成熟框架,但是一定要有MVC的概念,基本要拋棄面向過程編程方式,采用面向?qū)ο?,不任性?/p>

3.2. 結(jié)合多種設(shè)計(jì)模式進(jìn)行開發(fā),如單例模式、工廠模式、抽象模式、觀察者模式等等,這些都是成熟的概念,都要盡量多用!優(yōu)雅,大氣,效率,易讀;

3.3. 類內(nèi)部變量定義以權(quán)限放第一位,變量修飾符放第二位,以重要程度分先后,如 public static function fun1(){} ;類名與文件名有某種特定程度的相同,方便查看;類名統(tǒng)一首字母大寫;私有變量或方法使用下劃線開頭以區(qū)分,如 private function _doCut($data);文件以最能體現(xiàn)其功能的單詞命名,區(qū)分類型,如 IndexController.class.php, function.inc.php;

3.4. 文件內(nèi)部使用統(tǒng)一命名方式,要么使用下劃線方式命名,如 $get_child,$bind_value,要么使用駝峰式命名,如 $getChild,$bindValue;變量名盡量使用全名不要使用簡寫,如 getCategory不要簡寫成getCat;

3.5. 多個(gè)參數(shù)之間有逗號分隔時(shí),逗號后要留一個(gè)空格如 fun($param1, $param2);運(yùn)算符兩邊均有一個(gè)空格(數(shù)組對齊除外),如 $click = 123;

3.6. 避免使用global變量,尤其是有些不是公共初始化時(shí)產(chǎn)生的變量;

3.7. 杜絕函數(shù)內(nèi)部include方法文件,因?yàn)檫@樣很難找到真正起作用的方法,或者說方法混亂;

3.8. 使用自動(dòng)加載方式,而非include方式;

3.9. 如果一定要包含文件,盡量使用include_once,require_once 避免一個(gè)文件被引入多次從而報(bào)錯(cuò)情況;

3.10. 對可能多次引用的全局變量,使用某類的靜態(tài)方法進(jìn)行獲取,如 ConfigClass::get(‘main’, ‘field’); 對于數(shù)據(jù)庫一類連接,使用靜態(tài)變量,保存首次連接時(shí)打開的連接,從而多處使用DB實(shí)例時(shí),仍然不會(huì)重復(fù)實(shí)例化,如 $db = ConfigClass::getDbInstance();

3.11. 多使用isset(), empty()等系統(tǒng)函數(shù)進(jìn)行判斷空操作而非 !$var, $var == null;

3.12. 對于使用兩次以上方法,就應(yīng)該去考慮提出到公用地方或者類中;

3.13. 數(shù)據(jù)查詢先確認(rèn)當(dāng)前索引,配合寫SQL,特別地方,一定加上注釋;

3.14. 會(huì)使用文件鎖,數(shù)據(jù)庫鎖,會(huì)使用緩存如 memcache, redis, mongodb等;

3.15. 會(huì)適當(dāng)使用事務(wù);

其實(shí),好與不好,大家已早有定論,只是作個(gè)參考,罷了!

習(xí)慣,就好!

不要害怕今日的苦,你要相信明天,更苦!
編輯:hfy

聲明:本文內(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)注

    59

    文章

    1561

    瀏覽量

    68313
  • PHP
    PHP
    +關(guān)注

    關(guān)注

    0

    文章

    452

    瀏覽量

    26576
收藏 人收藏

    評論

    相關(guān)推薦

    探討AI編寫代碼技術(shù),以及提高代碼質(zhì)量的關(guān)鍵:靜態(tài)代碼分析工具Perforce Helix QAC & Klocwork

    令軟件開發(fā)人員夜不能寐的事情比比皆是。如今,他們最關(guān)心的問題不再是如何用自己喜歡的語言(C、C++、Erlang、Java 等)表達(dá)最新的算法,而是人工智能(AI)。 本文中,我們將介紹AI編寫代碼
    的頭像 發(fā)表于 06-05 14:10 ?273次閱讀

    扎心靈魂小拷問:有了AI編寫代碼之后,軟件工程師會(huì)被AI取代嗎?

    軟件開發(fā)者們有很多讓他們焦慮的事情。他們最擔(dān)心的不再是如何用他們最喜歡的編程語言(C、C++、Erlang、Java等)表達(dá)最新的算法。相反,這種擔(dān)憂正逐漸被人工智能(AI)所取代。 在這里,我們將探討AI編寫代碼的過程,并回答這個(gè)問題:AI會(huì)取代程序員嗎?
    的頭像 發(fā)表于 05-24 19:17 ?489次閱讀
    扎心靈魂小拷問:有了AI<b class='flag-5'>編寫</b><b class='flag-5'>代碼</b>之后,軟件<b class='flag-5'>工程師</b>會(huì)被AI取代嗎?

    嵌入式軟件工程師和硬件工程師的區(qū)別?

    、調(diào)試和測試嵌入式軟件,以確保其功能正常,性能優(yōu)良。 * 文檔編寫:包括編寫用戶手冊、維護(hù)文檔等。 * 維護(hù)和更新:對現(xiàn)有的嵌入式軟件進(jìn)行維護(hù)和更新,以解決出現(xiàn)的問題和滿足新的需求。 嵌入式軟件工程師
    發(fā)表于 05-16 11:00

    嵌入式系統(tǒng)中C語言的編寫規(guī)范

    最重要的一條規(guī)則 編寫代碼時(shí)最重要的一條規(guī)則是:檢查周圍的代碼并嘗試模仿它。 作為維護(hù)人員,如果收到的補(bǔ)丁明顯與周圍代碼的編碼風(fēng)格不同,這是
    的頭像 發(fā)表于 05-11 08:49 ?845次閱讀

    為何國外工程師偏愛使用for(;;)來實(shí)現(xiàn)MCU死循環(huán)?

    一位工程師發(fā)現(xiàn),國外工程師在給demo在做死循環(huán)時(shí)用的是for(;;),而不是常用的while(1)。這僅僅是個(gè)人習(xí)慣的問題,還是有更深層次的含義?
    發(fā)表于 04-01 11:26 ?425次閱讀
    為何國外<b class='flag-5'>工程師</b>偏愛使用for(;;)來實(shí)現(xiàn)MCU死循環(huán)?

    一位硬件工程師的歷練之路:入門學(xué)習(xí)理論到... #搞笑 #硬件工程師 #電子工程師 #揚(yáng)興科技

    硬件工程師揚(yáng)興科技
    揚(yáng)興科技
    發(fā)布于 :2024年03月13日 17:50:21

    單片機(jī)如何通過代碼控制硬件:一名工程師的分享

    今天跟大家聊聊單片機(jī)是怎樣通過代碼來操控硬件的。作為一名單片機(jī)工程師,我們平時(shí)的工作就像是給單片機(jī)編寫“指令集”,讓它按照我們的意圖去驅(qū)動(dòng)各種硬件設(shè)備。
    的頭像 發(fā)表于 03-06 14:46 ?1095次閱讀
    單片機(jī)如何通過<b class='flag-5'>代碼</b>控制硬件:一名<b class='flag-5'>工程師</b>的分享

    中高級【嵌入式驅(qū)動(dòng)工程師】年薪50w內(nèi)可

    中高級【嵌入式驅(qū)動(dòng)工程師】 年薪50w以內(nèi)可 工作?地點(diǎn):北京市 了解更多 ?5年以上內(nèi)核驅(qū)動(dòng)開發(fā)經(jīng)驗(yàn) ??需要有國產(chǎn)化操作系統(tǒng)/芯片平臺的驅(qū)動(dòng)開發(fā)經(jīng)驗(yàn)(必須) 交換機(jī)/交換芯片驅(qū)動(dòng)開發(fā)經(jīng)驗(yàn)
    發(fā)表于 11-23 13:35

    淺談Verilog HDL代碼編寫風(fēng)格

    習(xí)慣摸索,最終算是總結(jié)出了一套自己的代碼書寫風(fēng)格,當(dāng)然我的代碼風(fēng)格還是一直在進(jìn)化中?,F(xiàn)在將自己的一些經(jīng)驗(yàn)總結(jié)出來,希望對剛開始學(xué)習(xí)FPGA
    的頭像 發(fā)表于 11-20 10:04 ?592次閱讀
    淺談Verilog HDL<b class='flag-5'>代碼</b><b class='flag-5'>編寫</b><b class='flag-5'>風(fēng)格</b>

    自己編寫函數(shù)示例代碼很難嗎?分享幾個(gè)示例!

    Q A 問: Arduino Uno的函數(shù)示例 我決定自己編寫函數(shù)示例代碼,因?yàn)檫@應(yīng)該是Arduino中的基本示例。網(wǎng)絡(luò)上確實(shí)有關(guān)于使用函數(shù)的文檔,但是,如果要嘗試使用代碼環(huán)境,則必須得訪問
    的頭像 發(fā)表于 11-16 16:05 ?405次閱讀
    自己<b class='flag-5'>編寫</b>函數(shù)示例<b class='flag-5'>代碼</b>很難嗎?分享幾個(gè)示例!

    FPGA工程師需要具備哪些技能?

    ,工程師需要能夠產(chǎn)生正確的測試數(shù)據(jù)集,以確保設(shè)計(jì)的準(zhǔn)確性和性能。 在綜合方面,F(xiàn)PGA工程師需要使用工具將HDL語言轉(zhuǎn)化為更低級別的代碼。這樣,他們就能夠順利地將代碼映射到可編程
    發(fā)表于 11-09 11:03

    如何成為一名優(yōu)秀的嵌入式工程師

    使用調(diào)試器、打印調(diào)試信息、分析日志等。 7.關(guān)注代碼質(zhì)量和可維護(hù)性:作為嵌入式工程師,你需要編寫高質(zhì)量、可維護(hù)的代碼。這意味著你需要遵循良好的編程習(xí)
    發(fā)表于 11-07 15:36

    如何編寫高性能的Rust代碼

    為了最大限度地提高Rust應(yīng)用程序的性能,你需要了解支持代碼的底層硬件架構(gòu),如何優(yōu)化算法和數(shù)據(jù)結(jié)構(gòu),以及如何對代碼進(jìn)行配置和基準(zhǔn)測試。在本文中,我們將簡要介紹這些主題,希望能更好地理解如何編寫高性能的Rust
    的頭像 發(fā)表于 11-03 14:28 ?686次閱讀
    如何<b class='flag-5'>編寫</b>高性能的Rust<b class='flag-5'>代碼</b>

    怎么樣規(guī)范自己的代碼

    , WebKit,也支持自定義風(fēng)格(通過編寫.clang-format文件),很方便的統(tǒng)一代碼格式。 Linux下安裝Clang-format : sudo apt-
    的頭像 發(fā)表于 10-07 14:51 ?439次閱讀
    怎么樣規(guī)范自己的<b class='flag-5'>代碼</b>

    單片機(jī)程序設(shè)計(jì)編程規(guī)范分享

    本規(guī)范適用于松翰科技 8-bit MCU 部門匯編程序編寫準(zhǔn)則,同樣適用于代理商及重要客戶工程師編程規(guī)范參考。本規(guī)范的目的為統(tǒng)一編程風(fēng)格,保證程序編寫質(zhì)量,提高程序的可移植性和維護(hù)性。
    發(fā)表于 09-25 08:06