发布于 2026-01-06 5 阅读
0

干净的代码 (TH.) 目录 简介 หลักการในการ 干净的代码

干净的代码(TH.)

目录

介绍

干净的代码

บทความนี้เป็นการสรุปเนื้อหาเ ท่าที่ผู้อ่านเข้าใจจากหนังสือ
CleanCode 罗伯特·C·马丁 鲍勃

目录

  1. 介绍
    1. 干净的代码
    2. 错误代码
    3. หนี้สินทาง软件คืออะไร
    4. 干净的代码 (สำคัญ)
  2. 干净的代码
    1. 有意义的名字
    2. 功能
    3. 评论
    4. 格式化

介绍

清洁代码Robert C. Martin
ตามความเข้าใจหากผิดพลาดช่วย评论กัได้นะเออ

干净的代码

干净的代码 คือ code สะอาดครับ คำว่าสะสาดอาจจะหมายถึง อ่านง่าย แก้ไขง่าย ต่อยอดง่าย แต่เราจะทำยังไงให้มัน ได้อย่างที่เราบอกกันละ错误代码 错误代码

错误代码

เราอาจจะเคยต้องอ่านโค๊ทต่อจากคนอื่นหรือ เราไม่ได้ทำ项目นั้นนานๆ แล้วกลับมาอ่านสิ่งที่เราจะเจอ

  • 数据来源:DowData 数据来源:
  • 函数 genAcTcUserSta
  • 代码 代码 函数 函数
  • เรา 检查是否 เพื่ออะไรวะ ตรงนี้ไม่เห็นจำเป็นต้องมีนิ
  • บางตัวแปลไม่ได้ใช้ประกาศทำไม
  • ฯลฯ

软件ทั้งสิ้น

หนี้สินทาง软件คืออะไร

มันคือสิ่งที่ทำให้เราช้าลง เพราะหนี้สินล้วนมีดอกเบี้ย สิ่งที่จะเกิดผลกระทบ

  • เวลาในการศึกษา代码นั้นๆจะมากขึ้นเช่น มีคนใหม่เข้าทีมอ่านทีหัวแตก(学习曲线สูง)
  • 功能特点修复bug
  • เขียน 测试ยาก (ถึงกับไม่รู้จะเขียนยังไง)
  • อ่านยากมากๆอ่าน代码แล้วอยากลาออก
  • ฯลฯ

วันหนึ่งจะมีคนพูดว่า“ถ้าอ่านยากขนาดนี้ เขียนใหม่ยังง่ายกว่า”

干净的代码

代码 代码 代码 代码 代码 代码 代码 代码 代码 代码 代码 代码
代码 代码ทำงานได้สำคัญกว่าอยู่แล้ว
ความเร็วในการออกของสำคั ญมากยิ่งเราอยู่ในโลกของ敏捷和scrum

ผมก็จะบอกว่าถูกครับ

เรามองว่า 干净的代码 เป็นสิ่งเล็กๆ แต่คุณลองคิดถึงเวลาคุณมีบ้าน ที่ประตูปิดไม่สนิทเวลาปิดมีเสียง เอี๊ยดดดๆเหมือนในหนังผี กระเบื้องห้องน้ำเรียงมั่วก๊อกน้ำน้ำรั่ว
บางปลั๊กไม่มีไฟ ถามว่าเป็นบ้านไหมเป็นอยู่ได้ไหมก็อยู่ได้ แต่ทุกสิ่งที่กล่าวมาล้วนป ัดเป่าเสน่ของบ้านทั้งสิ้น

จงให้ความสำคัญกับสิ่งเล็กๆในสิ่งเล็กๆ ล้วนสำคัญ
คนธรรมดากับมืออาชีพ ต่างกันที่ความใส่ใจในรายระเอียด

แต่เรามักถูกบีบด้วยเวลา และคนเดินมาเร่งมากมายเวลาเกิดปัญหาเราก็จะบอกว่า

  • ผมมีเวลาแค่นี้ครับ
  • ได้แค่นี้ก็หรูแล้ว
  • มันทำงานได้ก็โอเคร

程序员软件债务 软件债务罗伯特·C·马丁 (Robert C. Martin) อธิบายให้หัวหน้าฟังเพราะ บริษัทที่ทำงานนั้นเกี่ยว กับด้านการเงินเลยเกิดคำน ี้มาเพื่อให้หัวหน้าเข้าใจ总理,总理
软件债务ด้วยเพื่อใช้ในการประเมิณเวลาในการทำด้วย


干净的代码

有意义的名字

การตั้งชื่อ

使用能揭示意图的名称

ชื่อทุกสิ่งที่เราตั้งล้วนต้องมีความหมาย类函数 val หากชื่อพวกนั้นต้องการ评论แสดงว่าชื่อนั้นยังไม่บอกเจตนาอย่างชัดเจน

// Day of week
var dow 

or

var dayOfWeek
Enter fullscreen mode Exit fullscreen mode

使用易于发音的名称

ชื่อต้องอ่านออกเสียงได้หลีกเลี่ยงการใช้

数字序列:a1 a2 a3

噪音词汇是另一个毫无意义的区别。

产品类别。商品信息 ProductInfo 商品数据 ProductData คุณได้สร้างชื่อให้แตกต่างกันโ ดยไม่ทำให้มีความหมายแตกต่างกัน ข้อมูลและข้อมูลเป็นสั ญญาณรบกวนที่ไม่ชัดเจน
คำเช่น a, an และ这个
อย่ากลัวที่จะตั้งชื่อยาวหากชื่อนั้ สร้างความแตกต่างอย่างมีความหมายได้

噪音词是多余的。

类型类型:nameString, dateLong帐户列表 帐户列表และ

IDE 类型 类型动态类型

避免散布虚假信息

หลีกเลี่ยงการทำเกิดความเข้าใจผิด หรือทำให้ความหมายเปลี่ยนแปลง ต่างจากความหมายที่เราตั้งใจไว้适用于 hp、aix、sco、linux 平台

账户列表 accountList การตั้งชื่อแบบนี้เสี่ยงต่อก รเข้าใจผิดได้ง่ายว่ามันคือ รายการบัญชีหรือกลุ่มของบัญชีหรือเปล่า帐户 数组帐户 帐户组 帐户组 帐户

做出有意义的区分

ทำให้มีความหมายอย่างแตกต่างบางครั ้งการตั้งชื่อให้แตกต่างกันมันก็ยาก ตัวแปรบางตัวที่ชื่อเหมือนกันจะโ ดนฟ้องโดยคอมไพเรอให้เปลี่ยนชื่อ

使用可搜索的名称

搜索 搜索 搜索 搜索 搜索常量 常量 常量 常量มันไม่ง่ายเลยที่เราจะหาตัว我ที่เราตั้งการใน โปรเจค

หรือเราจะหาตัวเลข1ในโปรเจคควรตั้ง常数แทนเช่น MAX_DRIVER_IN_CAR

避免编码

เลี่ยงการใช้ตัวย่อ เพราะว่ายากต่อการเข้าใจและออกเสียงไม่ได้ คิดถึงหนังสือพิมพ์นยพตรอนพ อะไรวะงงเยอะไปหมด

成员前缀

เลี่ยงการใช้คำนำหน้าเช่น m_student ถ้า函数เราเล็กพอสิ่งนี้จะไม่เกิดแน่นอน

类名

ควรเป็นคำนามเท่านั้นห้ามใช้กริยา

方法名称

ควรเป็นกริยาเท่านั้นห้ามเป็นคำนาม

别装可爱

尤里卡、菲尼克斯、艾琳(แปลว่าแสงสว่าง)

每个概念选择一个词

协议管理器 协议控制器ดูเหมือนกันเลยแต่จะเอาอันไหนละ

使用解决方案域名

创建 PluralDependentMessageParts 方法
命名空间ไว้ข้างหน้าจะเป็นทางออกสุดท้าย


功能

小号

1 个功能 150 个功能 1 个
功能 100 个功能
20 月 20 日

块和缩进

if else if else while 语句 ไม่ควรเกิน 1 บรรทัด หากเกินควรแยก函数

做一件事

1 个函数

函数参数

ควรน้อยที่สุดเท่าที่เปิดไปได้ และไม่ควรเกิน 3 ถ้าเกินเราอาจจะสร้าง班

动词和关键词

函数功能

无副作用

函数 副作用 副作用 函数做一件事

public class UserValidator {
 private Cryptographer cryptographer;
 public boolean checkPassword(String userName, String password) {
       User user = UserGateway.findByName(userName);
 if (user != User.NULL) {
       String codedPhrase = user.getPhraseEncodedByPassword();
       String phrase = cryptographer.decrypt(codedPhrase, password);
       if ("Valid Password".equals(phrase)) {
        Session.initialize();
       return true;
     }
   }
 return false;
}
Enter fullscreen mode Exit fullscreen mode

代码 จาก 干净的代码 :Rovert C matin หน้าที่ 44

提取 try/catch 代码块

尝试捕获函数并执行此操作
函数功能ให้ทำงานเพียงอย่างเดียว
(ในการ try catch ควรมีแค่函数เดียวการทำงานเดียวที่เราดัก)

不要
尝试捕获 ในหลาย 函数错误信息ี้มาจากกระบวนการไหนของ流程กันแน่

function delete(page){
 try{
  deletePage(page);
  registry.deleteReference(page.name);
  configKeys.deleteKey(page.name.makeKey());
 }catch(error){
   throw Exception("can't delete page "+page.id+" error :"+error)
 }
}
Enter fullscreen mode Exit fullscreen mode


function delete(page){
 try{
  deletePageAndAllReferences(page);
 }catch(error){
  throw Exception("can't delete page "+page.id+" error :"+error)
 }
}
function deletePageAndAllReferences(){
  deletePage(page);
  registry.deleteReference(page.name);
  configKeys.deleteKey(page.name.makeKey());
}
Enter fullscreen mode Exit fullscreen mode

เราควร

不要重复自己

复制品重复


评论

代码ที่ดีต้องไม่มี评论评论 评论 评论代码评论 评论
评论版权声明作者声明

หรือข้อยกเว้นหากเราเขียน libary ที่ซับซ้อนมากๆการ评论ก็ไม่แปลกอะไรแต่ทางที่ดีที่สุดคือ评论


格式化

编码风格和可读性 编码风格 编码风格 编码风格 编码风格 编码风格 编码风格 编码风格 编码风格 编码风格 编码风格 编码风格150
小时 1 小时 1 小时

ทั้งหมดทั้งมวลนี้อาจจะไม่สอ ดคล้องกับสิ่งที่คุณรู้เชื่อ หรือเข้าใจ คุณอาจจะไม่เห็นด้วยกับบทความนี้ทั้งหมดก ็ได้เพราะหลายคนประสบห์การต่างกันอาจจะมี 诡计ที่เทคนิคพิเศษที่ต่างกันไป

图片替代文字

文章来源:https://dev.to/gun27311/clean-code-th-3eg6