屬于圖像編碼的編碼方式 編碼方式


屬于圖像編碼的編碼方式  編碼方式

文章插圖
阿里妹導讀:Don Roberts 提出的一條重構準則:之一次做某件事時只管去做;第二次做類似的事時會產生反感,但無論如何還是可以去做;第三次再做類似的事時,你就應該重構 。
編碼也是如此,當多次編寫類似的代碼時,我們需要考慮是否有一種 *** 能夠提高編碼速度,讓編碼速度“起飛”?高德地圖技術專家陳昌毅(常意)多年來致力于敏捷開發,總結了一套編碼的 *** 論,有助于程序員"快速、優質、高效"地進行編碼 。
*** 1:手工編寫代碼大多數剛學習 Java 的程序員,都會懷著一種崇敬的儀式感,一字一句地在開發工具上敲出以下代碼:
public class Test { public static void main(String[] args) { System.out.println("Hello world!"); }}沒錯,這就是經典的"Hello world",這也是大多數人手工編寫的之一個程序 。
手工編寫代碼,更能體現一個程序員的基本素質 。有很多公司,都把上機編程考試作為面試的重要手段之一 。面試者需要根據題目的要求,挑選一款熟悉的編程工具(比如Eclipse),手工編寫代碼并調試運行通過 。在整個過程中,不能通過 *** 搜索答案,不能查看聯機幫助文檔,要求面試者必須手工編寫代碼,主要是考察面試者手工編寫代碼的能力——語法、函數、邏輯、思維、算法以及動手能力 。
手工編寫代碼,是一個優秀程序員必須具備的基礎能力 。手工編寫代碼正如提筆寫文章,語法就是遣詞造句的 *** 、函數就是組成文章的詞句、類庫就是據經引典的掌故、架構就是行文表述的體裁、功能就是寫作文章的主旨、算法就是組織語言的邏輯……所以,只要掌握一門程序語言的語法、學習一堆基礎類庫的函數、引用一些所需的第三方類庫、選擇一款成熟穩定的架構、明確一下產品需求的功能、挑選一種實現邏輯的算法……手工編寫代碼就會像寫文章一樣手到擒來 。
*** 2:復制粘貼代碼常言道:"熟讀唐詩三百首,不會作詩也會吟 。"編碼也是同樣的道理,編碼的之一步就是模仿,簡單地說就是"抄代碼"——復制粘貼代碼 。復制粘貼代碼是一門藝術,用好了編碼會事半功倍 。但是,沒有檢驗過的東西,終究是不可全信的 。當看到需要的代碼時,在復制粘貼前,我們都需要仔細研讀、認真思考、詳細甄別……很多東西,都是仁者見仁、智者見智的東西,適合別的場景但不一定適合你的場景 。作為一名合格的程序員,切不可一味地"拿來主義" 。
1.為什么要復制粘貼代碼
復制粘貼現有代碼,可以節省開發時間;復制粘貼穩定代碼,可以降低系統故障風險;復制粘貼 *** 代碼,可以把別人的成果化為己用 。2.復制粘貼代碼帶來問題
你對復制的代碼理解程度是多少?實現邏輯是否合理?能不能穩定運行?存在多少潛在的 Bug?這個代碼在項目中已經復制粘貼了多少次?根據“三則重構”原則,你是否需要對這些相同代碼進行重構?代碼被復制粘貼次數越多,帶來的代碼維護問題越多 。多個代碼版本的更改和修正,要保持這些代碼的同步,就必須需要在每一處進行同樣的修改,增加了維護的成本和風險 ??傊瑥椭普迟N代碼,跟其它編碼 *** 一樣,沒有優劣對錯之分 。它只是一種 *** ,你可以善用,也可以濫用 。如果我們用到了復制粘貼,我們就必須為結果負責 。
*** 3:用文本替換生成代碼1.生成代碼樣例
已經編寫好的用戶查詢相關代碼:
/** 查詢用戶服務函數 */public PageData<UserVO> queryUser(QueryUserParameterVO parameter) { Long totalCount = userDAO.countByParameter(parameter); List<UserVO> userList = null; if (Objects.nonNull(totalCount) && totalCount.compareTo(0L) > 0) { userList = userDAO.queryByParameter(parameter); } return new PageData<>(totalCount, userList);}/** 查詢用戶控制器函數 */@RequestMapping(path = "/queryUser", method = RequestMethod.POST)public Result<PageData<UserVO>> queryUser(@Valid @RequestBody QueryUserParameterVO parameter) { PageData<UserVO> pageData = https://www.juguize.com/b/userService.queryUser(parameter); return Result.success(pageData);}如果我們要編寫公司查詢相關代碼,其代碼形式與用戶查詢類似,整理出替換關系如下:
把"用戶"替換為"公司";把"User"替換為"Company";把"user"替換為"company" 。利用 Notepad、EditPlus 等文本編輯器,選擇區分大小寫,進行普通文本替換,最終得到結果如下:
/** 查詢公司服務函數 */public PageData<CompanyVO> queryCompany(QueryCompanyParameterVO parameter) { Long totalCount = companyDAO.countByParameter(parameter); List<CompanyVO> companyList = null; if (Objects.nonNull(totalCount) && totalCount.compareTo(0L) > 0) { companyList = companyDAO.queryByParameter(parameter); } return new PageData<>(totalCount, companyList);}/** 查詢公司控制器函數 */@RequestMapping(path = "/queryCompany", method = RequestMethod.POST)public Result<PageData<CompanyVO>> queryCompany(@Valid @RequestBody QueryCompanyParameterVO parameter) { PageData<CompanyVO> pageData = https://www.juguize.com/b/companyService.queryCompany(parameter); return Result.success(pageData);}利用文本替換生成代碼,整段代碼生成時間不會超過1分鐘 。

推薦閱讀