一個好的程序員就是一個懶惰的程序員

但是,通常情況並非如此……

一個好的程序員就是一個懶惰的程序員

儘管您可能不想在面試中帶頭去做,但懶惰是使優秀程序員與其他人區分開的一種基本哲學。 優秀的程序員對基本任務的感覺是相同的,例如遍歷記錄集並根據結果執行簡單的邏輯,就像小學生攻擊數學作業一樣,有著同樣的熱情,但要減去成熟的怪胎,但可能要減去 抱怨要完成的工作。

面對現實吧,編碼有時只是數據輸入的一種高級形式。 這是要通過而不是讓我們的牙齒陷入的東西。

通常,這是一個機會。

通過懶惰成為一名優秀的程序員的藝術是總是在尋找模式和打包方式。 目的是儘快解決項目令人費解的沉悶部分,以便我們將更多的時間和精力集中在實際的問題解決上。

公平地說,大多數程序員在某種程度上都知道這一點。 畢竟,對象和函數是開發的基本構建塊,而應用程序只是打包的構建塊,不斷地傳遞以產生結果。 但是優秀的程序員將這些想法帶到了一個極致。

在這一點上,我將停止並陳述希望顯而易見的事情:反之則不成立。 懶惰的程序員很少好。 你知道我在說的人。 也許他們喜歡在運行查詢時執行該查詢並在屏幕上盯著屏幕三分鐘,而不是打開一個新選項卡並處理另一段代碼。 也許他們認為不需要適當的錯誤處理,因為"代碼應該可以正常工作"。 或者,也許他們很好,可以走很長一段路,因為他們在那裡可以按照告訴他們的方式做,並且即使計劃存在明顯的低效率,也不會偏離計劃。

優秀的程序員是懶惰的,因為他們喜歡在項目中比較困難的部分上工作,而不是鍵入基本上是自己編寫的代碼。

這不是完成最少工作的競賽。 這不是要在5點鐘出來,而要在第二天早上8點之前完全忘記工作。 優秀的程序員是懶惰的,因為他們喜歡在項目中比較困難的部分上工作,而不是鍵入基本上是自己編寫的代碼。 實際上,最優秀的(通常是最懶惰的)程序員在半夜醒來,喊著"啊哈!" 這是因為他們在入睡時解決了一個特別棘手的難題。 或者,他們看著餐桌旁的另一半,因為自從食物擺在桌子上以來就一直在腦海中編碼,突然意識到他們根本不知道在准假中進行的談話到底是什麼。

我當然從來都不是喜歡只鍵入代碼的人。 無論大小,我都喜歡打包。 大大小小的? 哎呀,即使很小。 在為諸如D&D和Pathfinder之類的桌面遊戲開發隨機地牢生成器時,我經常需要檢查地圖上某個點周圍的特定半徑。 它可能是一個陷阱,可能從一個方格的地方冒出來,或者是一個事件可能從兩個方格的地方發生,或者是一個可能從四個方格的地方發現聚會的遭遇,無論距離多遠,SQL幾乎都是相同的。 因此,我沒有在where子句的同一部分中鍵入內容,而是編寫了一個函數,該函數將接受x / y座標和半徑以吐回SQL。

簡單。 但是,它使我免於數十次手動鍵入操作,而且甚至更重要的是,它確保where子句不會出現錯字。 這意味著半個小時都沒有仔細檢查代碼,只是發現我鍵入的是3而不是4。

當在寶藏表中查找物品以填滿箱子或在遭遇表中的怪物來製造伏擊時,我遇到了類似的模式。 字段名稱已更改,但基本算法相同。 將有一條記錄,記錄中包含權重或頻率(應從數據集中隨機提取的頻率),條件(例如生物或寶藏的高度,遭遇或物品的類型等)和主鍵 識別它。 具體細節可能會發生變化,但是您如何從此類數據集中隨機選擇記錄保持不變,因此誕生了一個繁重的功能。

有時做某事的最懶惰的方式是讓代碼編寫代碼。 我從來都不是開發平臺附帶的模板的最大支持者,但是我非常喜歡自己編寫代碼。

當我開始第一個"實際"編程工作時,我們使用Visual Basic訪問Microsoft SQL Server。 (是的,我是恐龍。我什至還記得在大學時在綠屏終端上鍵入內容以在VAX / VMS大型機上進行開發。)創建數據輸入表單的通常方法是包括一個鏈接到字段上的記錄集對象 表單,但是Microsoft附帶的記錄集對象並非沒有自身的錯誤和性能問題,因此我們將"手動"完成這一部分。 在這種情況下,這意味著寫出我們自己的代碼來插入,更新和刪除記錄。

這導致大量代碼在表單上的字段中查找值,以手動構建INSERT或UPDATE語句。 乏味。

儘管Microsoft的記錄集對象並不總是可靠的,但它至少使執行這些基本功能所需的代碼量最少。 因此,為了在避免記錄集對象本身的同時模仿此好處,我開發了一個類,該類將表單上的字段與數據庫中的字段進行比較,以便自動生成執行這些基本任務所需的SQL語句。 顯然,這比我在這裡要講的要複雜一點,但是結果複製了記錄集對象的好處(更輕鬆,更小的代碼塊),同時減去了主要的干擾因素(可能是錯誤或效率低下的代碼,您無法控制) )。

當我轉向使用MySQL與PHP一起工作時,遇到了相同類型的問題。 大表=許多代碼=無聊。 此處最大的區別是,技術人員較少,他們會在同一文件中處理HTML事務,因此我想確保一些簡單性。 有時候,那些大塊的代碼實際上對技術水平較低的人來說比對完成相同事情的更復雜的系統更容易處理。 解決方案:生成可運行以自動生成在數據庫中插入,更新和刪除記錄所需的基本PHP代碼的代碼。 基本上,構建自己的模板。

這些示例並沒有使用戶眼花撩亂,而是表明無論代碼的大小如何,程序員都應該尋找模式。 即使創建SQL SQL where子句以在一定距離內引入記錄之類的簡單操作,也可以對完成項目所需的時間產生積極影響。 我什至擁有給定where子句的函數,可以給我一個表的最小值或最大值。 從長遠來看,將錯字排除在外的事實可以使這些功能值得。

我們大多數人在程序員的陪伴下工作了幾年,很高興能日以繼夜地逐行輸入無意識的代碼,因此沒有緊迫感尋找最有效的途徑。 我並不是說這些都是不好的程序員,但是,如果您花費最多的時間來完成項目的每個部分,那麼當出現令人驚訝的難題時,您更有可能落伍。 而且幾乎總是有一個驚喜。

在這裡尋找編碼中的模式會帶來最大的收益。 無需鍵入代碼即可節省時間,無需花太多時間就可以實現每個人都想花很短時間才能實現的功能,但實際情況要長得多。

懶惰的程序員的基本心態? 始終尋找一種模式。

(本文翻譯自Daniel Nations的文章《A Good Programmer is a Lazy Programmer》,參考:https://levelup.gitconnected.com/a-good-programmer-is-a-lazy-programmer-8982b2d971bb)


分享到:


相關文章: