最少編碼原則

本文作者是一位資深軟件工程師,他根據多年的編程經驗,把自己的觀點組織整理成本文,希望能給大家一點啟發。

“最少編碼原則”并不是說寫的代碼少到令意思表達不清楚。其實在很多情況下,可以只寫幾行代碼就能執行相同的邏輯,但這對于后來接手的開發者來說是非常棘手的。最少編碼不只是寫最少量的代碼,還意味著優雅的代碼。如果你是有經驗的程序員,可能就會明白我將要說什么了。本文的目的是嘗試著去闡述清楚這個原則,雖然程序員們都聽過都了解該原則,卻很少能在每天的工作中將其運用起來。

最少編碼指的是代碼不僅僅全面解決了問題,而且除了執行能夠準確地解決問題的邏輯行,沒有其他多余的行。代碼要盡可能普通,簡單的代碼也是優雅的代碼,程序員看到這樣的代碼會感到愉悅。

最少編碼和設計良好的解決方案之間有著密切的關系,優秀的解決方案可以大大減少代碼量。使用組態代碼(不同功能的代碼可以很容易地組合)以及減低代碼行或邏輯之間的耦合度,就是很好的代碼設計例子,同時也符合最少編碼原則。

將一段代碼轉換成最少代碼就是我們通常所說的重構,重構可以刪掉多余的不必要的部分,精簡代碼。

大量的代碼需要執行大量的邏輯,很容易造成bug。沒有寫出來的代碼才沒有bug,只要在編輯器中輸入了字符,那么bug也可能潛伏在其中。重點是,如果代碼不是特別繁瑣,那么潛在的bug也會相應減少,最少編碼原則可以將出現bug的可能性降到最低。

如何寫出最少代碼?
通常在寫代碼前要進行代碼設計,而不是一來就開始敲代碼,這是毋庸置疑的。簡單的、通用的邏輯能減少代碼量。對第一稿代碼運用代碼重構可以使代碼簡練,將最終版本轉化為優雅的解決方案等,這都遵循了最少編碼的原則。其實反復思考以及不斷運用最少編碼原則能夠使任何垃圾代碼變得優雅。

原文鏈接:Principle of least coding

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/451811.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451811.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451811.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是標記接口

標識接口的作用 標識接口是沒有任何方法和屬性的接口。標識接口不對實現它的類有任何語義上的要求,它僅僅表明實現它的類屬于一個特定的類型。 標接口在Java語言中有一些很著名的應用,比如java.io.Serializable和java.rmi.Remote等接口便是標識接口。標識…

18--兩數之和 II - 輸入有序數組

文章目錄1.問題描述2.解題代碼1.問題描述 給定一個已按照升序排列 的有序數組,找到兩個數使得它們相加之和等于目標數。 函數應該返回這兩個下標值 index1 和 index2,其中 index1 必須小于 index2。 說明: 返回的下標值(index1 和 index2&a…

阿里巴巴 連接池 druid 的使用、maven依賴

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. Druid是一個JDBC組件,它包括三部分: DruidDriver 代理Driver,能夠提供基于Filter-…

Oracle數據庫(二)—— 基本的SQL SELECT語句

(一)SQL語句分為一下三種類型 DML:Date Manipulation Language 數據操縱語言DDL:Data Definition Language 數據定義語言DCL:Data Control Language 數據控制語言DML:用于查詢與修改數據記錄 包括如下SQL語句&#xff…

簡單 3 步實現高效編程

本文的內容可能部分開發者已經了解,并且已經按照這些方法實施了。但本文還是想強調這些方法,因為這些簡單的方法可以讓你的工作更加高效。要想實現高效編程,最主要的是集中注意力,但這往往也是比較難以實現的,因為你在…

bootstrap table footerFormatter用法 統計列求和 sum、average等

其實上一篇blog里已經貼了代碼,簡單解釋一下吧: 1、showFooter: true,很重要,設置footer顯示: $(cur_table).bootstrapTable({url: /etestpaper/getPaperQType,method: get,queryParams: {strParentID: parentid},ajaxOptions: {s…

19--兩數之和

文章目錄1.題目要求2.代碼詳情1.題目要求 2.代碼詳情 java:暴力求解法hashmap法 class Solution {// 方法一&#xff1a;暴力求解法// public int[] twoSum(int[] nums, int target) {// int n nums.length;// for (int i0; i<n; i){// for (int ji1; j…

單利設計模式

單利設計模式 A&#xff1a;保證對象在內存中只有一個。 B&#xff1a;如何保證&#xff1f; **不能讓其他類來創建對象。 **本類中要創建一個本類對象。 **對外提供公共的訪問。 C&#xff1a;步驟 我們的類是Student **private Student(){} **Student s new Student(); **p…

MVC表示層框架——Velocity技術

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Velocity&#xff0c;名稱字面翻譯為&#xff1a;速度、速率、迅速&#xff0c;用在Web開發里&#xff0c;用過的人可能不多&#xff0c…

redis的配置文件

redis的配置文件 之前在實習的時候才開始接觸redis&#xff0c;隨著對redis的理解加深&#xff0c;才慢慢明白它的強大&#xff0c;也逐漸對他的配置有了一定的了解。下面就分享給大家&#xff0c;以便日后查看。 位置 redis的配置文件名為redis.conf在它的安裝目錄下。 參數說…

你的代碼(軟件)安全嗎?【信息圖】

2011年安全事件層出不窮&#xff0c;幾乎可以稱為“黑客年”。以前黑客通常是利用程序漏洞來造成破壞&#xff0c;令網站陷入尷尬的境地&#xff0c;但如今他們卻是為了竊取數據、IP地址&#xff0c;或者通過在網站中植入木馬將惡意軟件安裝到訪客的電腦里&#xff0c;更有甚者…

20--兩個數組的交集

文章目錄1.問題描述2.代碼詳情1.問題描述 給定兩個數組&#xff0c;編寫一個函數來計算它們的交集。 示例 1&#xff1a; 輸入&#xff1a;nums1 [1,2,2,1], nums2 [2,2] 輸出&#xff1a;[2] 示例 2&#xff1a; 輸入&#xff1a;nums1 [4,9,5], nums2 [9,4,9,8,4] 輸…

MD5密碼加密

using System; using System.Security.Cryptography; using System.Text; namespace DimoNetwork.Common.DEncrypt { public enum MD5ResultMode : byte { Strong 0, Weak 1 } /// /// 在應用程序中定義用于單向加密文本的方法 /// public class TextEncrypt { private TextE…

跳出IT運維怪圈 看南方報業如何主動出擊

雖說世界上沒有一勞永逸的事情&#xff0c;不過借助某些方案&#xff0c;IT運維倒可做到事半功倍。近日&#xff0c;南方報業傳媒集團采用新華三智動遠程運維服務解決方案&#xff0c;利用7*24級別安仔的桌面服務&#xff0c;實現IT運維智能化、自動化管理&#xff0c;有效保障…

ORA-01841: (完整) 年份值必須介于 -4713 和 +9999 之間, 且不為 0情況解決

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 報錯&#xff1a;ORA-01841: (完整) 年份值必須介于 -4713 和 9999 之間, 且不為 0 2. 我的sql是&#xff1a; <!-- 查詢 推薦下載…

網絡傳輸與加密

談到網絡&#xff0c;就必然會涉及網絡安全。但“安全”這個事情&#xff0c; 一下子就會讓人聯想到黑客&#xff0c;進而把“安全”這個事情無限放大為各種高大上、神秘莫測、不可知。這不是一個engineer應有的態度&#xff08;《一次艱難debug的反思》&#xff09;。 要討論網…

21--最小棧

文章目錄1.問題描述2. 代碼詳情1.問題描述 設計一個支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常數時間內檢索到最小元素的棧。 push(x) —— 將元素 x 推入棧中。 pop() —— 刪除棧頂的元素。 top() —— 獲取棧頂元素。 getMin() —— 檢索棧中的…

python讀取excel

1 import xlrd2 book xlrd.open_workbook(app_student.xls)3 sheet book.sheet_by_index(0)4 # sheet2 book.sheet_by_name(shee1)5 # print(sheet.cell(0,0).value) #指定sheet頁里面行和lie獲取數據6 # print(sheet.cell(1,0).value) #指定sheet頁里面行和lie獲取數據7 # …