重構之美之一利用多態重構為帶參方法
我在閱讀遺留代碼時,經常發現存在這樣一種情形。在一個類中存在兩個方法,它們做了相似的工作,區別僅在于方法內部某些對象的類型。例如: public class WorkSheet{
private void fillHeader() {
...
|
我在閱讀遺留代碼時,經常發現存在這樣一種情形。在一個類中存在兩個方法,它們做了相似的工作,區別僅在于方法內部某些對象的類型。例如: public class WorkSheet{
private void fillHeader() {
...
在開發過程中,當你發現代碼可以Copy-paste時,就意味著代碼出現了重復。這是一種典型的反模式。William J.Brown等在著作AntiPatterns-Refactoring Software,Architecture, and Projects in Crisis(即《反模式&m...
關于如何面試程序員,網上有很多優秀文章。這是其中一篇:《如何在面試中發現優秀程序員》。該文著重講電話面試或親自面試。一些公司的面試過程演變成90天的試用期。
關于面試過程我沒有多少新內容補充。...
這是一篇提供有效、實用編程方法的程序箴言,作者Susan Harkins是世界最大的技術期刊出版社的主編,具有多年的實踐經驗;在這篇文章里她重申“最佳編碼實踐原則”的重要性;雖然文中主要討論VB開發相關的...
分頁程序一般由兩條SQL組成:SELECT COUNT(*) FROM ... WHERE ....
SELECT ... FROM ... WHERE LIMIT ......
InfoQ:小馬,請首先做一下自我介紹。 小馬:大家好,我叫趙澤欣,在淘寶的花名是小馬,隸屬于淘寶UED部門,很榮幸能夠接受InfoQ的采訪,謝謝。 InfoQ:小馬,現在Web開發相關的類庫特別多,請問淘寶在選擇Web框架做開發的...
這篇文章算是我一個小小的總結,大家看了不要見笑。 大學的時候上的是“網絡工程”專業,關于編程的課程只有C語言,winform基礎,java語言基礎。教我們C語言的老師特別嚴厲,所以C語言那本基礎教程...
一個合格的程序員,應該重視Bug,并在實際項目開發過程中,有效地規避這些Bug,當然也要分情況。有些Bug,在有些情況下建議不要做太嚴格的規避,否則的話,可能會對整個項目的開發進程產生嚴重的阻礙。個人的開發實踐證明...
模式名稱:生成器模式 1.問題描述 生活場景:你玩過種地、種花等類似的游戲嗎?這是最近很流行的游戲喲!下面就是從種花游戲中剪切的四個花盆(盆景),很漂亮吧!你將不同的種子放入花盆,一段時間后你就可以看到各種美...
一、場景 在SQL Server 2005中,有一個表TestDatetime,其中Dates這個字段的數據類型是datetime,如果你看到表的記錄如下圖所示,你最先想到的是什么呢?
(圖1:數據列表)你看到這些數據,是不是覺得這樣的設計既浪費了存儲...
一、數據表的設計 在數據庫中,我們通過如右圖所示的具有主子關系的兩個表存儲AuditLog相關信息。我們將“事務”作為我們進行追蹤的單位,不過這里的講的“事務”更多地指業務處理事務...
一、元素分組:<fieldset>、<legend>示例: 1 <fieldset>
2 <legend>健康信息:</legend>
3 <form>
4 <label>身高:<input type="text" /></label>
5 <label>體重:<input type="text"...
我是從《MySQL Admin Cookbook》一書中看到這個問題的,有一定的隱蔽性,遂記之。友情提示:本文測試所用的MySQL版本是5.1.44-community,其它版本未測試,結果可能有差異。 先看看InnoDB中的情況:CREATE TABLE enu...
概述使用Qt做過UI的一定對QHBoxLayout, QVBoxLayout, 和QGridLayout這三個最重要也最常使用的layout managers非常熟悉。那么在QML中又是如何控制和管理UI布局的呢?那么我們這篇文章就為大家介紹這些基礎知識。首...
前幾天新浪微博發生了一起大的系統故障,很多搞技術的朋友都比較關心,其中的原因不會超出James Hamilton在On Designing and Deploying Internet-Scale Service概括的那幾個范圍,James第一條經驗“Design f...
借助開放課件是學習網頁設計最簡單且最便宜的方式之一。你可以通過開放課程免費得到一些全球頂級高校的指導。 諸如加州大學伯克利分校、華盛頓大學和麻省理工學院等著名學府都提供網頁設計和開發課程。...
Jean Bezivin, Nantes大學的名譽教授,在他最新的博客中,回憶了軟件工程過去四十年的歷史,因為他相信顛覆的時刻即將到來。Jean認為軟件工程已經發生了三次巨變:第一次巨變在1968年10月的Garmisch NATO會議上已經...
近日,Google的一位工程師Sans Serif發布了一篇博文非常清楚的描述了Android系統架構,中國移動通信研究院院長黃曉慶在新浪微博上推薦了該文,并認為文中對Android的介紹很好,您可以看一下Google工程師眼中的Andro...
前端是個很特殊,帶點矛盾的職位。所以我們的“前端攻城師”也大都是些矛盾體。矛盾在感性和理性之間,矛盾在文藝和三俗之間,矛盾在放任和嚴謹之間。作為所謂的“攻城師”,攻的不僅是&ldquo...
每個編程人員都需要至少掌握三種編程語言。當然,這只是我的一家之言。 這是我經過多年養成的觀點,也許是偏見,但我能夠根據一個人所喜歡的編程語言來快速的了解一個程序員。當我讀簡歷時,我會嘗試使用我的這...
每次當我開始做一個新項目時我都非常的興奮。即使是在做了20年的軟件開發后,我仍然感覺心里像揣了一個小兔子似的怦怦直跳。這將是我們共同的旅程。我深信我們正在繪制一份充滿樂趣、富有挑戰、內容豐富的路線圖...
這個帖子原本是在C++奮斗樂園論壇討論的,后來覺得有必要和更多朋友分享下,所以就在這里也貼出來了,希望大家一起補充。因為我個人學的是C/C++的,所以JAVA等程序語言的書籍我就不討論了。這里討論的主要是C/C++的...
昨天我做了一些事情使我的編程效率提高了一倍。簡單,容易,但使我的生活發生了巨大的變化。 你們中可能有些人已經知道我是怎么做的。對于其他的人,這聽起來有些瘋狂。 我不持續工作。 或者,我把定時器...
前一篇:Hacker傳說之不能說的秘密(1) 說明1:對點擊“推薦“的朋友表示感謝,博客園有沒有可以看到是誰推薦的功能呢? 說明2:對所有的評論朋友表示感謝,即使是批評意見也很有價值。 說明3:是這個...
一點說明:之所以叫不能說的秘密,并非因為保守,而是因為告訴一般人,他非但理解不了,還有可能要取笑你。所以有自尊的Hacker往往只傳自己信得過的人,以免自討沒趣。于是很多東西就逐漸成為了不能說的秘密。所以這個H...