天天看點

程式猿必須克服的十大程式設計禁忌

程式員在程式設計的時候難免會犯錯誤,但如果不從錯誤中吸取教訓,那麼習慣成自然,你會經常犯錯的。從錯誤中不斷的學習,鍛煉好的行為習慣有助于事業上的穩定。這就是我們如何将小麥從糟糠中差別出來以及如何避免程式設計禁忌的絕佳經驗。此外,最重要的就是可以為客戶帶來更好的使用者體驗。

1不提升非技術技能

我們認為非技術技能是項目成功的主要因素。這些非技術技能也可以稱之為“軟技能”,總體上來說,它已經被公司證明為能夠駕馭企業和客戶之間的長期商業關系,是以也能決定公司的成長發展路徑。一些關鍵的軟技能名額包括:

程式猿必須克服的十大程式設計禁忌

a.紀律——這是最重要的特征之一,缺乏紀律,最終會讓這個開發團隊在開發能力上“缺乏自信”。解決這一問題的矯正方法就是每天制定詳細的to-do清單:兌現你的承諾、完成你開始做的事情、避免多重任務,因為這些往往會讓你的生活産生混亂。

b.顧客的聲音——不把客戶置于決策的核心地位隻會跟你們業務的原始目的相沖突。如果客戶不高興,即使你擁有世界上一流的專業知識和資源也不會起什麼作用。保持符合客戶期望的解決方案、及時傳遞才能展現出項目的真正價值。

c.溝通——尤其是當客戶和供應商并不在同一地點的時候,明确而及時的溝通是填補服務空白的極好措施。主要集中在這三個方面你就能克服問題——進行主題讨論、清晰表達、幹脆簡潔。

d.了解需求——在整個開發生命周期過程中,決定成功和失敗的之間的一個至關重要的差別将會給人留下深刻的印象。通過最初的頭腦風暴法了解問題狀态,以及後續的交貨程式,這其中都要和客戶完美配合。隻有這樣,客戶才會贊賞你的工作,給你好評。

2對編碼不理智

古人雲:善泅者溺,善騎者堕。但估計絕大多數的程式員都認為自己的程式設計技術絕對的牛。而同樣真實的是,每一個代碼,讓不同的程式員去實作的話都會不可避免地發現它所存在的缺陷。是以說,隻有通過在一個項目上的合作,程式員之間必然有的摩擦才能證明誰是最好的。健康的競争是好事,但它不應該成為一個本來可以成功的項目的負擔。

另一個創意阻礙是無法将預定義的模闆使用在對你有利的開發項目裡。幾乎所有的程式設計語言有一個很好的線上 /内置的代碼片段存儲庫,可以修補代碼,防止重新程式設計。然而,如果因為不了解需求或缺乏接觸各種可用庫/模闆的話,這就意味着程式員最終會無意間将一開始就建立的代碼付之東流。這不僅增加了開發時間,也提高了總體成本。另外一點就是,釋出了的代碼已經經過了品質檢測,是以隻有将它用作模闆才能發揮它更大的價值。

3不一定什麼都要被了解

如果你是剛調到這個團隊來的程式設計人員,對于手頭的工作并不是很熟悉,那該怎麼辦?肯定是先看一些前任留下來的工作計劃,要是他寫的詳細倒也沒什麼,如果寫的不詳細,估計會讓你更加的撓頭。

是以,推己及人,在需要交代的工作上,最好是把任務寫的盡可能的詳細。這麼做也是非常現實的原因:能夠把程式設計問題解決掉,最好是保證使用解釋性的語言和英語發音來表示變量。一些基本的指針可以讓你的程式更容易被了解,包括:

a. 把所有參數、引用、方法和變量名稱盡可能接近英語表達。保持檔案名簡短但有助于了解的功能。

b. 使用++包裝文字是一個好辦法,能讓代碼和注釋更加清晰。

c. 将編寫的程式保持在一個連續的流程上,尤其是在使用OOP基礎上的語言:C#、C 和 C++。

d. 對于不同的代碼塊使用不同的描述名稱。

4不使用經過驗證的工具和技術

程式員的好壞從他使用的程式設計工具和調試工具上就能看出。在異常情況的跟蹤上,下面就是程式員經常會出現的常見錯誤。

對一些可能會對其它代碼有影響的常見案例進行捕捉,處理這些比較常見的異常情況(而不是特殊的異常)意味着無意中除除掉了會抑制整個程式的殘留部分,是以并不會影響他人的代碼。

也許程式員可能帶有惡意的意圖來捕捉所有的異常情況,但即使是捕捉到了也不實施采取措施,這就是常說的“虛假安全閥”,這種異常處理手段是對整個軟體的穩定和安全的一種妥協方式。

5較差的控制版本

在任何涉及多個團隊的項目裡,當談到版本控制的時候不去介紹使用最佳實踐都是一個十足的罪過。版本控制的目的是確定由一個人執行的編輯或修訂不去影響另一個人的工作。

版本控制不僅有助于将由兩個或兩個以上的程式員的編輯工作合并到一起,還有助于跟蹤程式的更改曆史。是以說,任何開發團隊都應該做一些好的改進措施以確定強大的版本控制,這其中就包括:

為每個解決方案建立一個“邏輯單元”

給解決方案制定描述性的名稱

確定你所使用的都是最先進的檔案

頻繁的向團隊分享你所做的各種改變

6擁有最新資訊的個人代表不了團隊

這是相對有趣的一點,所有的商業産品都想要以自身的靈活技術和産品文化來給客戶留下深刻的印象,但是現實中很少有廠商會花時間去磨練他們員工在介紹産品特點上的技能。許多公司隻是簡單地提供了一些基本的教育訓練,并且抱希望與員工在真實的日常項目裡學到更多的技能。是以部門經理和項目的直接上司可以通過以下兩個辦法來提高員工的業績:

一旦有新員工加入,就立刻強制安排他參加專業教育訓練,讓他知道他的角色是用來幹什麼的,盡早産生創造力。例如一個測試人與加入之後,就應該向他介紹程式設計的理念,之後将教育訓練重點放到測試實踐上,而不是繼續闡述程式設計的重要性。

現階段的技術的進化程度比以往任何時候都要快,,是以要記住,定期教育訓練是必不可少的,這是在給團隊創造價值。例如一個Web 設計師需要知道響應式設計,提供給設計師大量的使用者日常使用的移動裝置的不斷擴張的樣品,希望他們能獲得靈感。

7不恰當的測試

測試作為整個系統開發生命周期(Systems Development Life Cycle,簡稱SDLC)的重要一個要素,通常不需要開發團隊給出太驚人的結果。但是如果在測試環節沒有付出恰當的、相應的努力的話,這是說不過去的。下面的一些方法或許對你的測試團隊有用,至少在你們傳遞産品的時候能夠給使用者一個好的交代。

單元測試

實物模型

綜合測試

8注意安全漏洞

有的時候在軟體開發過程中,就會遇見如下這樣的安全漏洞:

A、不同元件之間意想不到的互動作用:a、輸入不正确的驗證資訊;b、SQL資料隐碼攻擊;c、跨網站指令碼;d、指令植入攻擊;e、跨站請求僞造(CSRF);

B、難以實施的資源管理,包括:a、不尊重可用記憶體緩沖區;b、對外控制;c、使用有潛在危險的功能;

9和客戶交流

最初的合同簽訂後,開發公司通常會忘記每天與客戶進行産品上的資訊互動,以至于在交貨的時候還需要進行更新。兩大關鍵的交流點可以讓你和客戶保持更好的、更長的關系:

在客戶開問之前,開發方應該和客戶進行交流溝通。

和客戶保持周期性的交流。

10避免标準實踐面臨的迫在眉睫的最後期限

通常情況下項目都會遇到進度延誤的現象。然而,這不是說你有理由去偷工減料或者是在開發或測試階段耍花招,未經測試的子產品絕對是一個隐患,會讓你的開發團隊名譽受損的。一個更好的方法來管理延遲是提前告知客戶并且積極執行延遲計劃。隻要延期的理由是有效的,客戶應該會了解,也會給你額外的時間來解決這個問題。

繼續閱讀