⑴ 程序員必知!迪米特法則的實戰應用與案例分析
迪米特法則,也稱為最少知識原則(Least Knowledge Principle, LKP),強調一個對象對其他對象保持最少了解。核心是降低類間耦合,提高模塊獨立性。簡言之,「talk only to your immediate friends」,指一個類只與直接關聯對象通信,避免直接與其他類交互。
其目的是降低耦合度,提升系統靈活性和可維護性。在Java開發中,應用迪米特法則可設計更符合實際需求的類和介面,提高代碼質量。
迪米特法則適用於減少類間直接交互的場景,以降低耦合度,提高維護性與擴展性。通過中介者模式改進代碼,如將AllInOneDevice直接與Printer和Scanner交互改為通過DeviceManager間接交互,實現更合理的類間通信。
總結,迪米特法則作為面向對象設計原則之一,重點在降低耦合度,提升系統維護性和可擴展性。遵循此原則有助於設計更靈活、可復用的代碼結構,但需注意適度應用,避免過度抽象,以免影響性能。
⑵ 作為一個程序員,應該有哪些必須知道的事
1. 懂得分享。盡可能使用開源,並且當你有能力的時候,要對其有所貢獻。聚全社會之智慧,勝過某些「大」公司之短視。
2. 公平競爭。嘗試其他技術、框架、方法和觀點。不要總以為只有你的選擇才是可行的。別的選擇也有可能比你的要強得多。要以開放的心態,來檢驗其他人的選擇。
3. 不要攻擊他人。像第2條所說的,不要僅僅因為別人恰巧使用.Net、Java或PHP就去攻擊他們(我在這方面有一次教訓)。有時,它們或許要比你所認為的更有效。只要別人不是一無是處,你就可以從他們那裡學到很多東西。
4. 自我完善。盡量發布可以運行的代碼。不要指望QA能給你找出所有的程序錯誤。要經常並且全面深入地測試你的代碼。
5. 傷害他人要道歉。代碼審查是一個不錯但很少用的想法。指導經驗比你少的程序員,有助於整個團隊。不要公開批評他人。指導並不是貶低別人。別人有時候會接受,有時候不接受。其實,有時候你可能會從自認為水平不如你的人身上學到很多東西。
6. 未雨綢繆。動手寫代碼之前要盡量理解要解決的問題。要做原型、從網上查找實例、跟其他也做這個的人討論或者只是練練手而已。構建你從未做過或用過的東西是個壞習慣。如果開始就有思路,結果可能會更好。
7. 拿得起放得下。不要害怕替換、重寫、重構或者放棄垃圾代碼。有時候,如果碰到可留可不留的代碼,直接扔掉才是上策。永遠不要愛上你的代碼。
8. 平衡生活——學習、思考、繪畫、唱歌、跳舞、工作、玩耍,每樣都會一點。我喜歡Google的方式,在那裡,你有20%的時間用來思考任何你認為值得做的事情。老闆應該提供休息室、娛樂室或者一些能讓人放鬆清醒的環境。
9.編程是一項艱苦的腦力勞動活;有時你的大腦確實需要休息一下。拒絕例行公事地每周工作80小時,否則你的工作質量將大打折扣,花費大量時間取得的成果將前功盡棄。另外,如何釋放工作生活壓力,可以參考伯樂在線的這篇文章:《3步釋放工作和生活壓力》。
10. 每天下午小憩一會。每天工作24小時不會讓你更有效率。休息、回家,然後打個盹。通常,很多難題是在我回家的時候解決掉的,解決方法通常在我開車時或第二天早上突然想到。
11. 不要閉門造車。讀讀博客、學習新語言和框架、參與討論以及看看同行在干什麼。兩耳不聞業界事,你就無法成為一名更優秀的程序員。
12. 保持好奇心。想想塑料杯中的種子:根向下長,枝葉向上長,沒有人知道這是為什麼,但是我們都是這樣的。一般來說,在編程和技術世界,每天都有新奇東西出現。看!很神奇吧!每天學習,讓你思維更廣,技能更新,選擇也就更廣。如果你認為編程枯燥乏味,那麼你要該換行了。
⑶ 如何成為一個程序老手,新手必知的40個小技巧
老鳥和新手的一個很大區別來自於debug的能力。其中最主要又可以從兩方面看出來:
從高層往底層找錯。
科學方法。
0.重構是程序員的主力技能。
工作日誌能提升腦容量。
先用profiler調查,才有臉談優化。
注釋貴精不貴多。杜絕大姨媽般的「例注」。漫山遍野的碎碎念注釋,實際就是背景噪音。
普通程序員+google=超級程序員。
單元測試總是合算的。
不要先寫框架再寫實現。最好反過來,從原型中提煉框架。
代碼結構清晰,其它問題都不算事兒。
好的項目作風硬派,一鍵測試,一鍵發布,一鍵部署; 爛的項目生性猥瑣,口口相傳,不立文字,神神秘秘。
編碼不要畏懼變化,要擁抱變化。
常充電。程序員只有一種死法:土死的。
編程之事,隔離是方向,起名是關鍵,測試是主角,調試是補充,版本控制是後悔葯。
一行代碼一個兵。形成建制才能有戰鬥力。單位規模不宜過大,千人班,萬人排易成萬人坑。
重構/優化/修復Bug,同時只能作一件。
簡單模塊注意封裝,復雜模塊注意分層。
人腦性能有限,整潔勝於雜亂。讀不懂的代碼,嘗試整理下格式; 不好用的介面,嘗試重新封裝下。
迭代速度決定工作強度。想多快好省,就從簡化開發流程,加快迭代速度開始。
忘掉優化寫代碼。過早優化等同惡意破壞;忘掉代碼作優化。優化要基於性能測試,而不是糾結於字里行間。
最好的工具是紙筆;其次好的是markdown。
leader問任務時間,若答不上來,可能是任務拆分還不夠細。
寧可多算一周,不可少估一天。過於「樂觀」容易讓boss受驚嚇。
最有用的語言是English。其次的可能是Python。
百聞不如一見。畫出結果,一目瞭然。調試耗時將大大縮短。
資源、代碼應一道受版本管理。資源匹配錯誤遠比代碼匹配錯誤更難排查。
不要基於想像開發, 要基於原型開發。原型的價值是快速驗證想法,幫大家節省時間。
序列化首選明文文本 。諸如二進制、混淆、加密、壓縮等等有需要時再加。
編譯器永遠比你懂微觀優化。只能向它不擅長的方向努力。
不要定過大、過遠、過細的計劃。即使定了也沒有用。
至少半數時間將花在集成上。時間,時間,時間總是不夠。
與主流意見/方法/風格/習慣相悖時,先檢討自己最可靠。
出現bug主動查,不管是不是你的。這能讓你業務能力猛漲、個人形象飆升; 如果你的bug被別人揪出來.....呵呵,那你會很被動~≧﹏≦
不知怎麼選技術書時就挑薄的。起碼不會太貴,且你能看完。
git是最棒的。簡單,可靠,免費。
僅對「可預測的非理性」拋斷言。
Log要寫時間與分類。並且要能重定向輸出。
注釋是稍差的文檔。更好的是清晰的命名。讓代碼講自己的故事。
造輪子是很好的鍛煉方法。前提是你見過別的輪子。
code review最好以小組/結對的形式。對業務有一定了解,建議會更有價值(但不絕對)。而且不會成為負擔。管理員個人review則很容易成team的瓶頸。
提問前先做調研。問不到點上既被鄙視,又浪費自己的時間。
永遠別小看程序媛(╯3╰)!
⑷ 程序員必知,招聘黑話大全!
招聘術語是IT行業面試中常見的語言,以下是一些常見的術語,准備面試的你不可不知。
「base」一詞具有雙層意義。
「offer」等級分為三類,即「白菜」、「sp」和「ssp」,但現在又增添了更多細分,如「小白菜」、「大白菜」、「小sp」、「大sp」、「ssp」和「超級ssp」或「天才少年」、「新星計劃」。
「簽字費」是簽約獎勵,大廠offer通常會有簽字費,數額從10000到80000不等。
「校招八股」是對校招科目基礎知識的幽默稱呼,其中包含一些常考知識點。
「廠、廠、田廠、開水團、蝦皮」是行業內對某些特定科目的簡稱。
「潤」表示快跑之意,隱含著「程序和人有一個能跑就行」的理念。
「OC」即「offer call」,意指接到了口頭offer,而非正式offer。大廠的口頭offer一般沒有問題,後續會獲得正式錄用合同。
「hc」代表「head count」,意指招聘名額。每個部分的名額在招聘開始前已確定,最多可能比hc多一至兩個名額。
「開獎」意味著知道了offer等級和具體薪資,是令人興奮的時刻。正式offer發放前,HR會與你溝通薪資,並提供考慮時間,如果接受,則會收到正式offer。
「泡池子」是指面試結束後與其他通過者一起競爭,從中挑選出最出色的人才,獲得offer。通過面試並不等於拿到offer。
「argue」指的是在薪資方面進行談判,如果你有更滿意的offer,則可以利用它與目標公司進行薪資談判。請注意,這種操作有風險,需謹慎進行。
「OD」也有兩個含義,在秋招中使用頻率較低。
「總包」即年薪,由base乘以月份加上各種補貼和股票組成,根據公司不同,月份從12個月到16個月不等。
「JD」代表「Job Description」,對於校招生來說,可以參考各大型公司發布的JD,學習交集內容,因為這些技術對每個大廠都非常重要。
⑸ 想要成為一名程序員的話,都必須要掌握哪些技能
編碼是軟體開發人員的必備方面。在每個團隊中,每個開發人員必須被同一技術面試過程僱用。因此,我們可以推斷編程器或更少才能具有類似的編程技巧。在這種情況下,一個人如何成為一個好程序員?如果他們做與同齡人的努力做了什麼,他們可以做些什麼?如果你正在考慮這個問題,證明你已經超過了他人的團隊,你知道你想在專業領域擁有長期的發展,並編程效率不好。成為一個優秀的軟體開發人員必須擁有的技能。您可以編寫一個干凈整潔的代碼來確定您是否是優秀軟體開發人員的標准之一。通過查看代碼結構,人們可以輕松判斷您是一個能力的程序員。
只要有足夠的時間,大多數開發人員都可以完成交付,但不幸的是,在軟體行業中,時間是最有價值的東西,如果你公司在一個激烈的市場環境中,如果公司不能先進入市場或者與競爭對手同時進入市場,它將失去市場份額,這是至關重要的。因此,軟體開發人員需要有效地管理他們的時間。為此,您需要知道如何准確評估您的時間效率。當你第一次時,你會在評估中犯錯誤,但它是正常的,每個人都會產生類似的錯誤,但聰明的開發人員應該能夠來自他們。課程是學習和改進的。軟體開發專業是激烈的競爭。開發人員的熟練程度可能有所不同,但每個軟體開發人員都知道如何以一種或多種編程語言編寫代碼。在軟體行業中,依靠編碼技能來實現指數增長是不夠的。不要讓你的職業生長在幾年內。在您職業生涯的每個階段,實現您想要的目標,實現上面提到的七種技能,成為一個優秀的軟體開發人員。