導航:首頁 > 程序命令 > 程序員怎麼紋代碼

程序員怎麼紋代碼

發布時間:2022-09-19 08:24:57

程序員做些什麼工作是打代碼嗎打代碼是為了完成什麼程序員需要有那些方面的知識需要哪些基礎

***簡單說明
1.首先程序員並不是打字員。代碼是有需要思考,需要結合實際業務,並不是簡單的打字。

2.打代碼是為了讓計算機根據自己的代碼邏輯(比如你可以讓它去打開某個文件),完成某些具體功能
程序員工作是基於一種計算機語言,用這種語言去實現某些具體的功能~
#程序員分類比如#:java 程序員,c++程序員等等
#代碼的作用#:比如你去銀行存錢。
a.古代最原始的存錢方法,就是你去錢庄存錢,然後錢庄用自己的一個記賬單給記錄下來,下次再存,再找到對應的記錄,修改那條記錄的信息。
當賬單頁數特別多的時候,這個時候找到一個用戶信息,就會變得很困難。

b.現在的方法,銀行都會有一些應用系統,你要存錢,但電腦並不能直接理解你要干什麼。
這個時候,就需要把你要存錢這個東西轉換成計算機能懂的東西。這些電腦能夠明白的東西
就是你所說的代碼,代碼會經過一些處理,變成二進制的數據,電腦就能理解了

3.需要哪些知識:
計算機的常用操作, 最少會 一門編程語言,會使用一種開發工具,熟悉一種資料庫等等...

❷ 我是一個名前端程序員 我想紋個身 不知道紋啥好

紋一個隱形的翅膀吧

❸ 現在程序員都是自己寫代碼嗎還是直接復制網上的 那還有技術核心可言嗎

代碼的可變通性很高的,寫一個刪除垃圾的代碼是自我發明,我把刪除垃圾的代碼改成刪除系統文件的代碼(改變擴展名);也是自我發明.這個不好講,不管他復制不復制,互聯網的根基就是資源共享,只要能達到造福彼此的目的,就夠了吧我覺得.

❹ 什麼是代碼,代碼怎麼寫,怎樣寫入電腦

代碼就是程序員用開發工具所支持的語言寫出來的源文件,是一組由字元、符號或信號碼元以離散形式表示信息的明確的規則體系。代碼設計的原則包括唯一確定性、標准化和通用性、便於識別與記憶、力求短小與格式統一以及容易修改等。

簡單的說,你學會一門計算機語言然後就可以開始寫代碼了。寫代碼的過程叫做編程,編程是一項非常嚴謹的工作,一丁點錯誤都會導致你整個程序的崩潰。

寫好了代碼後,就可以用相應的編譯器寫入電腦了。編譯器能起到把源代碼編譯成能直接被計算機或虛擬機執行的目標代碼的作用。如果一切順利,經過編譯的代碼就生成了程序,就可以直接被電腦執行了。


(4)程序員怎麼紋代碼擴展閱讀

大致說來,從人的易用性來分,電腦語言好用程度從難到易可以分為三類,一類是低級語言,如匯編語言、機器語言,一類是中級語言,如C語言,還有一類為高級語言。

一般來說,我們都是學習的高級語言。電腦語言的級別越高,越接近人類語言,但靈活性與效率也越低。

電腦本身是沒有思維能力的,它是嚴格按照人的預先設定指令工作的。這些指令都是用電腦語言按一定的語法規則寫成的。如果你寫出的程序有誤,電腦就不能正確工作。因此學習編寫電腦軟體,能培養我們的邏輯思維能力與嚴謹、周密的思維習慣。

如同任何一種語言,電腦語言也有自己的名詞,自己的基本詞彙,自己的語法結構。並且它們的語法結構大致相同。

❺ 初級程序員如何抄代碼

無稽之談!
只要計算機基礎知識過關!上午要考的!
程序流程圖知道 C語言夠好 和C++(我學的的是C++)或Java會基礎就行 下午考的!

做到了!

這樣你的初級程序員穩過!!!

❻ 程序員如何方便的管理自己以前寫的代碼

一、代碼的最大長度。
雖然在Java的編譯器中對於代碼的最大長度沒有硬性的規定。但是如果代碼的長度太長,超過了編譯器的最當行寬,顯然閱讀起來比較麻煩。為此根據筆者的經驗,通常情況下Java源代碼的行長度不應該大於80個字元。如果超過這個長度的話,在一些開發工具和編輯器上就無法很好的顯示。如需要通過滾動條來顯示後面部分的代碼。當其他項目成員閱讀這超長的代碼時,就會看得眼花繚亂。當人的溫飽問題解決了之後,就需要開始注意美觀方面的問題。所以程序開發人員在開發應用程序的時候,要盡量避免書寫長的代碼。如果代碼的每行長度確實需要超過80個字元的話(最好將每行代碼的長度控制在70個字元左右),那麼就需要對代碼進行分行。
二、在恰當的地方對代碼進行分行。
筆者建議將Java源代碼每行的長度控制在70個字元、最大不超過80個字元。當超過這個字元長度的時候,開發人員就需要考慮在恰當的地方對他們進行分行處理。不過這個分行也不是說開發人員想在哪裡進行分行就在哪裡進行分行。這個分行是有一定技巧的。雖然這些技巧大部分並不是強制性的規定,但是都是一些專家們的經驗總結,可以提高代碼的閱讀性。為此筆者希望各位程序開發能夠嚴格的遵守。
技巧一:高層折行優於低層折行。
這個技巧是說,在考慮對代碼進行折行處理的時候,需要注意代碼的層次性。如某段代碼涉及到混合四則運算,而四則運算又有明顯的運算順序,此時對代碼進行折行時就最好能夠在四則運算的關鍵順序上進行折行處理。如現在有如下的一段代碼:
Mynum=mynum1*(mynum1+mynue2+mynum3-mynum4)+8*mynum5
如果要對這段代碼進行折行的話,該在哪個地方加入一個折行符號呢?如果是筆者處理的話,筆者會按如下的格式對代碼進行折行處理。
Mynum=mynum1*(mynum1+mynue2+mynum3-mynum4)+8*mynum5
這主要是根據四則運算的運算層次來進行折行的。顯然,*符號的優先順序要比+符號要高。所以在+號前面對其進行折行處理,那麼就可以一目瞭然的反應出代碼的運算層次。可以大幅度的提高代碼的閱讀性。所以代碼折行的第一個技巧就是高層折行優於低層折行。如此的話,可以使得應用程序的結構代碼更加的清晰,更容易被團隊成員所理解。
技巧二:在運算符前面進行折行處理。
其實在如上的折行技巧中,還隱藏著一個規則,即在運算符之前進行折行。如上例所示,筆者就是在+號前面進行折行,而不是在+號後面進行折行處理。這主要也是考慮到代碼的可讀性。如上面這個例子中,如果在+號後面進行折行處理的話,則下一行就會給人一種憑空多出來的感覺,顯得代碼很不連貫。跟這個規則類似,如果在折行處理的時候遇到逗號時,那麼最好能夠在逗號後面進行折行。如在一個方法中,需要傳入5個參數。此時如果代碼行比較長,那麼就需要在幾個參數之間進行折行處理。此時最理想的折行位置,就是在某個參數的逗號後面。注意,使在逗號後面進行折行,而不是在逗號前面。因為一個參數一個逗號是匹對的。而如果一個逗號加一個參數,則讓人看起來很不舒服。
技巧三:這行代碼的對起方式。
當不得已對代碼進行折行處理時,下一行的代碼應該與其同等級的代碼行左對齊。如上例所示,在+號前面將某一段四則運算公式進行折行處理的時候,其+號符號已經採取縮進處理。其縮進後的效果就是要與其同等級的代碼行左對齊。如此的話,明眼人一看就知道這段代碼採取過折行處理;而且跟上一行代碼的層次關系。當一段代碼被分割成三行甚至跟更多行數的時候,這個規則會非常的有用。如果能夠嚴格遵守這個規則,即使將代碼分割成多行,看起來也不會覺得那麼混亂。反而給人一種比較有層次的感覺。
另外在採取縮進處理的時候,可以利用Tab鍵來提高縮進處理的效率。因為直接按空格的話,有可能空格字元數量不一致,會讓人覺得層次不起,產生比較大的混亂。一般情況下,當代碼行兩側距離頁邊的距離比較大,看其來不怎麼舒服時,可以在代碼行中通過插入TAB鍵(會在代碼行中連續插入8個字元)來提高代碼的閱讀性,讓代碼的縮進實現統一。
技巧四:為變數尋找一個合適的位置。
在編寫應用程序時,盡量將變數聲明放置在一個代碼塊的開始處,也就是說{}花括弧的開始位置。雖然說可以在需要使用變數的時候再對其進行聲明。但是筆者不同義如此操作。因為如果在的呢感到使用變數的時候再來聲明變數時,會降低代碼的可讀性。同理,也需要避免低層聲明與高層聲明重復,這樣會引起代碼混亂並可能引發程序功能性錯誤。而且這種錯誤在後續的排錯中很難被發現。為此要在應用程序開發的時候就要盡量避免這種錯誤。
在聲明變數的時候,有時候可能代碼很簡單,生命變數的行總共加起來也不會超過十個字元。此時能否把多個變數的聲明寫在同一行呢?從就技術上來說,這是可行的。也就是說,Java編譯器允許將多個變數定義在同一行上。但是從閱讀性上來說,這並不是很好的做法。筆者的建議是,即使變數定義再簡單,或者變數比較多,也最好分行進行變數的聲明。也就是說,一行聲明一個變數。這可以提高代碼的可閱讀性。而且有時候往往需要對變數加一個注釋說明變數的用途,如果以行定義一個變數,添加行注釋也相對簡單許多。
總之,以上的這些折行的規則基本上不會影響到代碼的運行。但是,對於代碼的維護與後續的排錯、升級、二次開發等等具有不可忽視的作用。而且現在基本上應用程序開發式團隊開發,故大家都遵守同樣的代碼編寫規范是非常重要的。筆者在開發一個應用程序的時候,事先都會花一定的時間,跟項目成員強調這些折行的規則。目的只有一個,就是提高代碼的可讀性,便於後續代碼的共享與維護。畢竟後續面對這些代碼的,並不是客戶,而是我們自己。我們程序員在編寫代碼的時候,不能夠搬起石頭砸自己的腳。筆者認為,現在一個合格的程序人員,不僅技術功底上要過得硬,而且還必須要遵守這些無形規則的約束。難怪現在這么多企業在挑選程序開發人員的時候,都會註明良好的編碼規范。現在對於這些無形中的條條框框,項目經理已經開始重視起來。

❼ 成都北大青鳥:做java軟體工程師,怎樣才能寫出好的代碼

Java代碼之於java程序員而言就是左膀右臂,java代碼寫的好的java程序員明顯更是企業的歡迎,一個優秀的java程序員的考核標准之一也是看他的編程水平。
其實有的java程序員java代碼會受到大家的追捧,是因為他在寫代碼時注意的細節往往多於那些不怎麼關注java代碼編程細節的程序員,俗話說:「細節決定成敗」,那麼如何寫出好的java代碼呢?IT培訓http://www.kmbdqn.cn/介紹一起來討論下:1.重視注釋有的java程序員在寫代碼時,從來沒有想過要在java代碼後加上相關的注釋,甚至是上萬行的代碼也沒有想過加上注釋,這就存在很大的問題,不說你的代碼會跟其他人分享討論,就你自己回顧你是怎麼寫好這篇代碼的,你也是半天無法理出頭緒,這就為維護和修改等等工作添加了很大的麻煩。
所以,要想寫出好的java代碼,一定從簡短的java代碼編寫開始注重在java代碼後面加上相應的注釋,養成良好的習慣。
2.重視排版整潔看很多java程序員的排版總覺得在欣賞一幅藝術品,但是看到一些java程序員的排版卻總覺得無力吐槽。
同樣是編寫代碼,但是給人的視覺體驗是相當的不同,當然好的java代碼給人的享受也是美的,所以要想寫出好的代碼,一定要重視排版整潔。
3.注重命名規則現在在一個團隊開發中,都會提前定製一個統一的命名規則,這樣利於提高工作效益。
但是很多java程序員是缺乏這個意識的,每次敲代碼,更喜歡按照自己慣常的方式老命名模塊、函數,這樣是方便了自己,但是忽視團隊協作,所以在日常工作中,特別是團隊工作中一定要重視命名規則。
4.養成備份習慣備份的重要性不用小編強調,相必你也知道。
但是有的java程序員就是沒有養成這樣的好習慣,每次敲完代碼就不記得隨手保存,每次等到除了事故,比如電腦出了故障,辛辛苦苦敲打的java代碼沒保存找不回來的情況下就開始懊惱,與其這樣還不如在一開始就養成良好的備份習慣,這樣也方便自己日後查找利用。

❽ 一個程序員所要經歷的步驟

程序員應具備的12種能力
畢業四年來,感覺自己也是從一名不合格的程序員一步步走過來的。回頭反思一下,合格的程序員有很多標准和要求,下面是我總結的一個合格程序員應該具備的12種能力。中國軟體行業的崛起,靠的是合格的程序員。任何華麗的管理制度都不能保證軟體項目的成功交付,合格的程序員就是有力的保證,是項目成功的基礎。寫下這些,是為了給剛剛進入程序員這個職業的新同學們一點參考。我一直以為,當程序員是很辛苦的,如果不是真正的喜歡,很難堅持下去。如果真的不喜歡這個職業,也該尊重這個職業,尊重自己,趕緊改行。

1. 編程語言能力

不用多說,作為合格的程序員,精通一門語言是必須的。這種精通,不是說看了一本《24小時精通XXX》,抄了幾個程序就能說精通的,要靠長時間的積累和浸淫。

2.編碼能力

我曾經看多很多程序員寫的代碼,在同一個jsp或者java源文件里,出現了三種以上的對方法的命名方式,有下劃線間隔的,有全大寫的,有拼音首字母的。就像一個菜市場,雜亂無比,估計10天後,他自己都無法看的懂。遵守編碼規范,是一個程序員最基本的要求,可悲的是,很多程序員根本沒有意識到這個問題的嚴重性。隨意堆砌網上搜來的代碼,根本不管可讀性和可維護性,只要能實現功能就行了,心想做完這個項目,就拍拍屁股走人了,缺少最基本的職責素養。我經常把代碼必須成程序員的孩子,你就是是孩子他爹,孩子他媽,是有感情的。對你自己的孩子,你能不仔細呵護嗎?你是稱職的父母嗎?這是我編寫的一個Java編碼規范,供大家參考,這里可以下載http://gurudk.javaeye.com/blog/111734

另外一個就是注釋,要注意不是為了注釋而注釋。對類,以說明職責為主;對方法,以說明意圖為主;對方法體,以說明實現思路為主。對於大段大段的代碼,要分段,使用空行隔開,並使用行內注釋進行說明。

思維的條理性,寫代碼之前,先簡單計劃一下,用自然語言把流程寫下來,用於整理實現思路。不要看了需求或設計之後,馬上就敲代碼了,敲完代碼馬上就debug。花點時間思考,敲代碼只是最後一個很簡單的工作,不要把自己變成一個代碼打字員,編寫邊想,寫了刪,刪了寫。安安靜靜把實現過程想清楚,在腦子里先實現一遍。再去敲代碼,水到渠成。

3.面向對象思維能力

如今,多數編程語言都是面向對象的編程語言。而這些面向對象的編程語言的共同的精髓就是面向對象的思想。掌握這些比面向對象語言本身更重要,比如對繼承,多態,重載的理解。對面向對象基本原則的理解,比如開閉原則,介面隔離原則,單一職責原則等。在此基礎上,應該掌握常用的設計模式,比如工廠模式,策略模式,觀察者模式,模板方法模式,命令模式等等。我面試過很多程序員,沒有一個能說得上幾句的。

4.利用工具能力

工欲善其事,必先利其器。有了趁手的傢伙,工作效率可以提升數倍。你編程序,有沒有選擇一個很好的IDE,以前聽說編程高手都用記事本寫程序,我覺得那是一種自虐。就像以前看到的一篇文章,說一幫戶外旅行愛好者,出去旅遊,背了重重的旅行包,裡面裝著什麼壓縮餅乾等快速食品。他們寧可就著礦泉水啃壓縮餅干,也不肯去1里路都不到的快餐店,農家菜館吃飯。工具是為目的服務的,好用,提高效率就行,形式無所謂。

另外一個常用的工具就是日記本,好聽點可以稱為知識管理工具,我用的是myBase,感覺非常好用,在之前,我的所有的片段內容都是記錄的單獨的文本文件里的,非常不好找,管理也很混亂。

經常上互聯網,看到好多好的資料想保存下來,作為日後查看之用.一開始,我用的是firefox自帶的書簽,但是自己分類太累,多了之後不便於查找,很麻煩。後來用了得樂書簽(del.icio.us)的firefox插件,非常方便,現在成為了我必備的一個工具。

還有一個最重要的工具就是搜索引擎了,我裝了google forfirefox插件,感覺不錯,還有英文翻譯功能。按照我同事的說法,內事用,外事用google。很多技術資料都是英文的,用google搜索效率高一些。搜索引擎用好了,就等於打開了一扇通向知識寶庫的門,使用搜索引擎,關鍵字選擇很重要。

經常去瀏覽大牛的blog,逐個網站訪問很麻煩,去看了又可能沒有更新,可以藉助於RSS訂閱工具,我是用iGoogle桌面工具,每天早上花半個小時掃一下,大牛的最新文章盡收眼底了。

5. 英語能力

新的技術資料都是英文的,英語國家的IT技術走在我們前面至少10年(這是我自己估計的數字,可能正在縮小)。就連印度,一個連基礎設施建設都不太完善的國家,因為其英語基礎較好,其在軟體外包領域的發展也非常迅猛,遠遠超過了我們。學英語,首先是有信心,其次就是花時間。多閱讀英文資料,使用金山詞霸,google的firefox插件等工具配合,貴在堅持。

6.學習能力

在IT也混飯吃不容易,整個環境進化的太快,你不學習,就等於落後了。學習要有針對性,別今天學ruby,明天學python,後天php的。首先要認清自己的目標,自己短期目標是什麼,1年後,3年後,5年後的目標是什麼。結合這些目標,確定自己的學習計劃,人的精力畢竟是有限的。當然,多掌握幾門編程語言也是好的,可以擴充自己的知識面,重要的是為自己的目標服務。

要想系統的學習一門技術或工具,看書是最好的方法。看完後,然後上網找相關資料,進行深入學習。學習要抓緊一切可以利用的時間,比如電腦啟動要花1分多鍾,旁邊放一本書,可以看上幾頁了。公交車上,地鐵上也可以看。

當然,不能只學習技術,要經常聯系自己的軟技能,比如溝通能力,表達能力。你可以把自己學到的東西,解釋給自己的同事聽,既加深了理解,又增進了同事之間的交流。學習的最高境界就是你能夠把學到的東西解釋給別人聽,這才說明你理解了。在學習心理學上,稱之為構成主義。

我學一樣東西,總是先上網了解有沒有相關書籍,如果想學,就買一本或者去圖書館找相關的書來讀。我買的書,家裡快放不下了(到目前位置,我買了1萬多塊的書)。我多半是把目錄看完,了解這本書講解的主要內容,然後需要的時候,我就可以立即補充它進入到我的知識結構。每個人可能都有自己的學習方法,意識到學習的重要,並能夠根據需要補充自己的知識,這種能力更重要。

7.創造能力

普遍認為,東方人模仿能力很強,但創造能力差。我見過很多這樣的程序員,經常說,「這個只能這么解決了,我想不出有什麼別的方法。」可能他根本都沒想過別的方法,或者懶得去想。對任何一個問題,找出兩種以上的解決辦法都是非常容易的,簡單的google一下,可能就是數十種。悲哀的是,有些程序員經常止步於自己構建的狹小領地之內。對待客戶也是這種態度,不是積極的幫助客戶解決問題,而是推脫這只是唯一解決方案。

打破這一思維定勢的首先的一個辦法就是在面臨一個問題時,首先想到的是「沒有不可能」,或是「一切皆有可能」,前面那個是阿迪的廣告語,後面是李寧的。只有這樣去想,才能尋找解決問題的別的出路,即使最後我們試了很多種辦法,還是只有著一種解決方案,但我們在這種尋找解決方案的過程中,常常會產生很多好的想法,這樣才會使我們真正深刻思考一個問題。建議大家看一看《水平思考》這本書,他提供了一些進行創造性思考的方法和工具。

但我認為,堅持認為存在另一種解決方案的信念是第一位的,方法和工具都是其次。

8.文檔能力

也許有人會質疑,程序員跟寫文檔有什麼關系。大家開源軟體也用過不少,看看Spring,hibernate,Struts等最流行的開源軟體的文檔就知道,他么的tutorial,他們的getstarted,他們的reference文檔寫的多麼的易懂。其實寫代碼也相當於寫文檔,只不過用的是編程語言。同樣,寫文檔,用自然語言,也相當於寫程序,簡單明了,清晰易懂,這樣的「程序」誰看誰舒服。同樣,對於想進階到設計師或者需求分析員角色的程序員,文檔能力更是非常重要。

word是一個最實用的工具,很多程序員,多級編號都不會用,索引目錄也不知道如何生成,更別靈活應用樣式了。很多排版都是所謂的dirty work。垃圾樣式一大堆。其實,靜下心來,稍微學習一下,就能寫出一篇格式漂亮的文檔。

9.抽象能力

抽象能力是認識事物從現象到本質的能力。如果你只是停留在「見山是山,見水是水」的層次,客戶說什麼,你就做什麼,設計怎麼做,你就怎麼實現,從來不過問為什麼,也不去想他是滿足了用戶哪些方面的需求呢。這樣可能只解決了表面的問題,可能會引起返工。認識到本質,才能讓你的程序具備更大的靈活性和可擴展性。在做企業應用軟體開發中,抽象能力體現為對問題域的理解能力,對領域模型的抽象。合理的抽象也是代碼重構的前提,每一次重構,都是向更好的抽象邁進了一步。

10.代碼評審能力

代碼評審和單元測試是保證代碼質量的兩種常用手段之一。代碼評審能力,說明了你的審美標准,知道什麼是好的,什麼是不好的,什麼是優雅的代碼,什麼是糟糕的代碼,你才能讓自己做的更好。

11.單元測試能力

沒有單元測試的代碼,只能說是半成品。因為沒有什麼能證明你的代碼是可以運行的。測試驅動開發是一個非常好的敏捷過程的最佳實踐。單元測試還可以作為回歸測試,在修改代碼時,起到警戒線標志的作用。是否具有單元測試的意識是區分程序員是否合格的重要標准。寫不寫單元測試是區分平庸程序員和優秀程序員的重要標桿。

12.DRY
DRY是一種原則,就是Don't RepeatYourself.出自《程序員修煉之道-從小工到專家》。這條原則可以用到很多地方,比如你經常要編譯,打包,部署應用程序,供集成測試用。每次你都在重復你自己,寫一個自動化腳本(比如用ant,批處理命令)來將這些工作自動化,以提高效率。

還有一個就是我們經常在不同的地方切換IP,如果每次手工做,也非常浪費時間,寫一個bat命令可以解決,找一個小工具也可以解決。

編碼時,對代碼的復用也是在重復你自己,雖然拷貝過程很爽,但是維護一致性就要付出巨大的工作量,特別是將來維護的人不是你的時候,使用代碼生成工具可以解決這個問題。類似的例子太多了,如果你發現你經常做一些重復的工作,就要警惕了,是否違背了這個原則,想一些辦法將他們自動化。

❾ 如何提升程序員的代碼編寫能力

一、先列三個常見的開發場景:

1、拿到一個模塊詳細設計文檔,大部分程序員的通常做法就是開始搭建界面代碼,然後從第一個按鈕點擊事件或頁面Load事件開始寫第一行業務代碼。寫的差不多了,就運行一下,發現哪裡不是自己想的那樣,就改改,直到改到是自己預想的那樣。

2、做完了一個功能模塊或幾塊相關聯的功能模塊,輸入111asd,發現新建正常、保存正常,就提交給測試人員。測試員用測試用數據、測試場景用例來測試,發現有問題,就登記bug。對於嚴重的影響下一步測試的BUG,測試員就用內部IM通知這個開發人員。對於不影響繼續往下測試的BUG,測試員就登記下來,等程序員有空時處理。

3、程序員一般工作不希望大家打擾,所以開發起來就是開發。等手頭開發告一段落,就看看BUG庫。發現有與自己有關的BUG,就從第一個BUG開始看起。就開始通過IM和測試員掰扯起來(這不是個BUG啊、業務邏輯不是你想的那樣啊、我這里不能重現啊、你給的信息描述不清晰啊),於是IM幾來幾往,甚至跑過去當面交流一番,甚至會拉扯上產品經理一起討論,更甚者需要項目經理或產品經理發起一個會議來集體討論一下

這是不是很熟悉呢?這就是大部分程序員開發的三個步驟:寫代碼、自測、修復BUG。

二、說好的代碼設計、代碼測試呢?

代碼設計?那不是都有開發平台么,已經固化了啊。那不是維護舊功能做完善修改呢么,又不是寫新代碼,只能在現有代碼基礎上修改啊,你又不能大幅重構。

代碼測試?你丫需求討論期、產品設計期、設計評審期那麼長,都把研發項目時間佔光了,就留下2個星期讓我們寫代碼,我們哪裡有時間搞那麼深的測試。還想讓我們搞結對編程?還想讓我們搞測試驅動開發?

而且你看測試,什麼功能測試、集成測試、性能測試、安全測試、安裝部署測試、升級測試、遷移測試、UAT測試,一大堆測試,測試也需要很多時間。

一個項目,需求討論、產品范圍規劃與評審、產品設計與設計評審佔了一個半月,開發+自測就一個月,測試佔了一個半月,這就4個月了啊。

三、為啥程序員寫代碼總是寫寫測測?

剛才大家也都看到了,大部分程序員都是從界面代碼開始寫起,而且寫一寫,就運行一下看看。為什麼會是這種開發方式?

那是因為大部分程序員缺乏在腦子中的整體建模能力。只能做出來一點,真實的感覺一下,然後再往下。

有些是產品經理的上游就有問題,沒給出業務流程圖(因為產品經理也沒做過業務),也沒畫清楚產品功能操作流程圖。

為啥沒給出業務流程圖?因為產品經理不熟悉業務,另外,產品經理也沒有流程建模能力啊。為啥沒畫清楚產品功能操作流程圖啊?因為不會清晰表達流程啊。

很多產品經理、程序員,都缺乏分類、分層、相關、先後能力,更別說總結、洞察能力。

這是基本訓練,是一個做事頭腦清醒的人必備的技能,這不是一個程序員或產品經理或測試員的特定技能要求。

我經常看書就梳理書的脈絡,每看一本就寫一篇總結。我過去閑扯淡還梳理過水滸傳、紅樓夢的人物關系圖呢,其實就在事事上訓練自己的關聯性、層次性、洞察性。

我經常面試一個人時,我會問這樣的問題:「你把我剛才說的話復述一遍,另外你再回答一下我為什麼會這樣?」,其實,我就在看一個人的細心記憶、完整梳理、重現能力,我也在看一個人的梳理、總結、洞察能力。

我個人寫代碼就喜歡先理解業務流,然後理解數據表關系,然後理解產品功能操作流,大致對功能為何這樣設計、功能這樣操作會取什麼表、插入或更新哪些表,哪些表的狀態欄位是關鍵。

然後我寫代碼的時候,就根據我所理解的業務流、功能操作流、數據輸入輸出流,定義函數,定義函數的輸入與輸出。

然後,我會給函數的輸入值,賦上一些固定值,跑下來看看能否跑通這幾個關聯函數,看看還需要怎樣的新增函數,或者看看函數的輸入輸出參數是否滿足跑通。

剩下的事,就是我填肉寫詳細邏輯代碼了。

當然,大部分人沒我這樣的邏輯建模能力。怎麼閱讀理解也想像不出來,也沒法定義函數。畢竟有邏輯建模能力的程序員都很少,100個人里有10個,已經是求爺爺告奶奶好幸運了。

那怎麼辦呢?

我建議是分離分工配合,這就是現實中沒辦法的辦法。讓有邏輯建模能力的人來設計函數框架、來設計工具來設計代碼模板,然後讓沒有邏輯建模能力的人來填肉寫詳細邏輯代碼。

我們可以先從最緊要的模塊開始這么做。不緊要的模塊,還讓它放任自流,讓熟練手程序員繼續塗抹。

我曾經還讓有頭腦的程序員做榜樣,給大家分享他是怎麼規劃函數的,怎麼做維護性代碼的代碼結構改善的。但是發現效果並不佳,其他人並沒有因此能做代碼設計。可能邏輯建模能力是個人的基本素質,是從小到大訓練成型的,不是你一個大學已經幾年的人能夠短時間內可以訓練的。

所以啊,還是讓能走的人先走,讓從最緊要的模塊開始這么做。

不必擔心這樣做後,因為過去一件事被分工(一個做代碼框架一個填肉)成兩個人做了會降低工作效率。我們很多的工作效率低就是因為半瓶子醋搞出來的,來回反復修改。

真是應了劉德華在電影里說的那句話:說你又不聽,聽又聽不懂,聽懂了又不做,做又做不好,做不好還不服氣。

四、為什麼大部分程序員不做代碼測試或白盒測試或單元測試呢?

還是因為沒有代碼設計。因為沒有函數啊。所以,一個按鈕功能有多復雜,代碼就有多長。我見過2000行的函數,我也見過1000多行的存儲過程和視圖SQL。怎麼做白盒測試啊,這些代碼都粘在一起呢,要測,就得從頭到尾都得測。

所以啊,先學會設計函數,先寫好函數,這就求爺爺告奶奶了。很多開發了5年的熟練手程序員,可能都未必會寫函數。

函數的輸入輸出值就很有講究。很多人都寫死了,隨著版本迭代,發現過去定義的函數參數不夠用了,於是就新增了一個參數。然後,相關性異常就爆發了,其他關聯的地方忘改了,到底哪些有關聯,怎麼查啊,本系統沒有,沒准其他系統就調用你了,你根本不知道哪個神經人曾經COPY過你的代碼修吧修吧就改成了他的功能呢,而且裡面的很多代碼他看不懂也不敢刪,只要他實現的功能正常了他也不管了。於是,你改了你這個函數,他的系統就莫名出錯了。

所以,我一般會定義幾個對象來做參數。另外,我也很注重函數的日誌、函數的異常保護、異常拋出、異常返回。另外,我也很注重參數輸入值的合法性校驗。

所以啊,應該開發Leader們先制定函數編寫規范最佳實踐,輸入輸出參數怎麼定義比較好,函數的返回值如何定義比較好,函數的日誌記錄應該怎麼寫比較好,函數的異常保護、異常拋出、異常返回如何寫比較好。先教會一般程序員,先從會寫函數開始啊。

當然,你光有一份規范,程序員們還是不理解、不實際應用啊。所以,還得Leader們做好典型的代碼模板,裡面是符合函數規范的代碼框架,只有這樣,一般程序員們才會照貓畫虎適應了函數設計的編程習慣。

所以啊,我專門重新定義了leader的明確職責,其中第一個重要職責就是:負責工具/框架/模板/規范的制定,並且負責推廣且普及應用落地。

你不明確定義Leader的這個重要職責,你不對這個職責做明確的KPI考核,誰尿你啊。你以為好的工具/框架/模板/規范是靠人們的熱情、自發產生的么?我們還沒有那麼自覺高尚啊。

五、為什麼大部分程序員不寫注釋啊?

我經常說一句話,千萬別多寫注釋。為啥?

因為我們經常遇到的問題不是沒有注釋,而是更糟的是,注釋和事實代碼邏輯是不相符的。這就出現常見問題了:殘存下來的設計文檔是一個邏輯、注釋是一個邏輯說明、真實代碼邏輯又是一個,鍾表多了,你也不知道正確時間了。

所以啊,產品文檔、注釋、真實代碼,三者總是很難一致同步。我為了幾百人研發團隊能做到這個同步花了大量心血和辦法,但我最終也沒解決了這個問題,還把Leader們、總監們、我都搞的精疲力盡。

索性回歸到一切一切的本源,代碼,就是程序員的唯一產出,是最有效的產出。那麼,讓代碼寫的不用注釋也能看懂,咱得奔著這個目的走啊。

為啥看不懂,不就是義大利面條式代碼么,又長又互相交雜。

OK,我就規定了,每個函數不能超過50行。用這一個簡單規定和靜態代碼檢查插件,來逼迫大家嘗試著寫函數。有的函數屬於流程函數,是串起其他函數的,有的函數就是詳細實現函數,實現一個且唯一一個明確作用的。

有了流程函數和功能函數,而且每個函數不超過50行,這就比過去容易看懂了。

六、為什麼大部分程序員不抽象公共函數啊?

我經常說一句話:千萬別抽象公共函數啊。為啥?

因為大部分程序員缺乏抽象洞察能力。特別是有些積極熱情有餘、愛學習愛看書、半瓶子醋晃悠的二桿子,看了幾本UML、重構、設計模式、整潔代碼之道,就躍躍欲試了,還真敢給你抽象公共函數了。

一開始,他覺得80%相似,20%不相似,於是在公共函數裡面簡單寫幾個if..else做個區隔就可以。沒想到,越隨著版本迭代,這些功能漸漸越變越不一樣了,但是這個代碼已經幾經人手了,而且這是一個公共函數,誰也不知道牽扯多少,所以誰也不敢大改,發現問題了就加一個if..else判斷。

沒想到啊沒想到,這個本來當初公共的函數,現在變成了系統最大的毒瘤,最復雜的地方,誰也不敢動,除非實在萬不得已,手起刀落。

所以,我平時告誡程序員,純技術的、純通用的,你們可以嘗試搞搞抽象公共函數,對於業務的,你們還是簡單粗暴的根據Leader們做的代碼模板代碼框架,乖乖的復制、修改、填肉吧。

你們啊,先從做模板做代碼片段開始吧,咱們放到咱們內部代碼片段開源庫里,看誰的代碼片段被別人復制的多,說明你的代碼抽象設計能力越好了。那時候,我就大膽放心讓你撒丫子跑了。在沒有學會跑之前,給老子乖乖的復制、修改、填肉吧。

閱讀全文

與程序員怎麼紋代碼相關的資料

熱點內容
嵌入式py編譯器 瀏覽:318
rplayer下載安卓哪個文件夾 瀏覽:296
安卓手機里的電子狗怎麼用 瀏覽:748
pythonspyder入門 瀏覽:764
趣質貓app是什麼 瀏覽:59
皮帶壓縮機經常吸不上 瀏覽:205
西部隨行版怎樣加密 瀏覽:996
釘釘上如何壓縮圖片 瀏覽:924
cad輸入命令不顯示窗口 瀏覽:618
小米視頻加密之後怎麼看 瀏覽:76
超級程序員劉芳閱讀 瀏覽:833
顧家九爺在哪個app 瀏覽:820
我的世界怎麼在聯機大廳做伺服器 瀏覽:290
分手程序員 瀏覽:447
php將html導出為word 瀏覽:801
騰訊加密視頻能破解嗎 瀏覽:1007
反編譯後導入eclipse 瀏覽:948
買阿里雲伺服器有郵箱嗎 瀏覽:825
pdf卡片2004 瀏覽:309
e算量加密鎖檢測不到 瀏覽:777