乐趣区

关于java:如何才能让自己写的代码特别清晰

编码约定是编程的格调指南。其中包含编程最佳实际和准则。这里咱们将探讨一些编码约定。

遵循约定的益处

  • 洁净的代码
  • 代码品质
  • 代码可读性
  • 使代码保护更容易

“洁净的代码简略而间接。洁净的代码读起来就像写得很好的散文。洁净的代码永远不会含糊设计师的用意,而是充斥了清晰的形象和间接的控制线。”— 罗伯特·C·马丁

神奇数字

一个神奇的数字意味着咱们正在调配没有明确意义的数字。有时咱们出于特定目标应用值,并且咱们不会在有意义的变量中调配值。问题在于,当有人应用您的代码时,该人不晓得该间接值的含意。

// 谬误示范
for(let i = 0; i < 50; i++){// 业务代码}
// 正确示范
let NUMBER_OF_STUDENTS= 50
for(let i = 0; i < NUMBER_OF_STUDENTS; i++){// 业务代码}

深度嵌套

有时咱们应用难以了解的嵌套循环。解决这个问题的办法是将所有循环提取到独自的函数中。
假如咱们有一个蕴含另一个数组的数组,并且咱们想要最初一个数组的值。咱们能够编写一个嵌套循环来满足咱们的要求。但这不是正确的办法。这里我写了一个能够做同样事件的函数,但这个函数更简洁、更简略、反复更少、更易于浏览和可重用。

// 谬误示范
const array = [[ ['Shoaib Mehedi'] ] ]
array.forEach((firstArr) =>{firstArr.forEach((secondArr) => {secondArr.forEach((element) => {console.log(element);
        })
    })
})

// 正确示范
const array = [[ ['Shoaib Mehedi'] ] ]
const getValuesOfNestedArray = (element) => {if(Array.isArray(element)){return getValuesOfNestedArray(element[0])
    }
    return element
}
getValuesOfNestedArray(array)

[[作者: 吴宏伟]](https://wuxiongwei.com)

评论

这是对某人的一种人身攻击。正文有助于人们当前了解,也有助于其余程序员在同一个我的项目上工作。代码中的正文意味着您的代码可能不是不言自明的。这是 Jeff Atwood 对于撰写评论的名言。

“尽管评论自身没有好坏之分,但它们常常被用作拐杖。您应该始终编写代码,就如同正文不存在一样。这迫使您以人类能想到的最简略、最简略、最自我记录的形式编写代码。”— 杰夫·阿特伍德

正文应该是好的,但您的代码须要不言自明。

防止大型函数

当一个函数或一个类较大时,倡议将其分成多个。这将使咱们的代码更简略、洁净、易于了解且可重用。
假如咱们须要加减两个数字。咱们能够用一个函数来实现。但好的做法是将它们分成两局部。当有独自的性能时,这将在整个应用程序中可重用。

// 谬误示范
const addSub = (a,b) => {
    // 加法
    const addition = a+b
    // 减法
    const sub = a-b
    // 返回
    return `${addition}${sub}`
}

// 正确示范
// 加法
const add = (a,b) => {return a+b}
// 减法
const sub = (a,b) => {return a-b}

代码反复

反复代码是指在您的代码中多次重复的代码块。这意味着您的代码局部须要提取到一个函数中。
这是咱们之前在第 2. 点深度嵌套中应用的示例。看第一局部:咱们反复了三遍同样的事件。让一个独自的函数做同样的事件的解决方案是更好的解决方案;此外,这是可重复使用的。

// 谬误示范
const array = [[ ['Shoaib Mehedi'] ] ]
array.forEach((firstArr) =>{firstArr.forEach((secondArr) => {secondArr.forEach((element) => {console.log(element);
        })
    })
})

// 正确示范
const array = [[ ['Shoaib Mehedi'] ] ]
const getValuesOfNestedArray = (element) => {if(Array.isArray(element)){return getValuesOfNestedArray(element[0])
    }
    return element
}
getValuesOfNestedArray(array)

变量命名

驼峰式大小写是变量和函数以及其余标识符的命名规范。这意味着名称应该以小写字母结尾,并且下一个单词的每个第一个字母都将大写。
函数和变量都必须遵循规定。

let camelCase = ''
const thisIsCamelCase = () => {// 业务代码}

有意义的名字

有意义的名称是最重要的约定之一。始终为变量、函数和其余名称应用有意义的名称。抉择一个能表白您的目标含意的名称。
如果咱们须要一个函数来获取用户的银行信息,那么咱们不能应用相似的名字 getUserInfo。咱们应该应用 getUserBankInfo 更具体。

描述性胜于简洁

尝试对任何命名应用细节。假如咱们须要一个函数来查找应用手机的用户。在这里,咱们能够应用有意义的名称,但如果有其余相似的性能,则出错的可能性很大。
咱们必须应用一个具体的、有意义的名称来概括地表白含意。

// 通过手机号搜寻用户
// 谬误示范
const searchUser = (phone) => {// 业务代码}
// 正确示范
const searchUserByPhoneNo = (phone) => {// 业务代码}

[[作者: 吴宏伟]](https://wuxiongwei.com)

每个概念应用统一的动词

这是重要的命名约定之一。如果咱们须要一个 CRUD 函数,咱们应用 create, get, 或 update 与名称。
如果咱们须要从数据库中获取用户信息,那么函数的名称能够是 userInfo, user, 或 fetchUser,但这不是约定。咱们应该应用 getUser.

// 好习惯
function getUser(){// 做一些事件}

应用名词作为类名并应用 Pascal 大小写

类不拿货色;他们就是货色。类次要是某物的蓝图。不要在类名中应用动词。
此外,一个类应该蕴含 Pascal 大小写。Camel case 是用于对象的,所以如果你在 class 中应用 Camel case,这会不太分明。

// 谬误示范
class MakeCar = {//...}
// 正确示范
class Car = {//...}

将常量值大写(SNAKE UPPER CASE)

这是咱们须要遵循的另一个约定。始终对常量应用齐全大写的名称。
Snake 大写示意所有字母都大写,下划线将所有单词离开。

const DAYS_IN_A_YEAR = 365;

防止单字母变量名

单字母变量应用起来十分十分蹩脚。不要将其用于变量名。
然而在一个循环中,咱们应用了一些带有字母的变量,应用起来是能够的。

// 谬误示范
const q = () => {//....}
// 正确示范
const query = () => {//....}
// 这样也能够
for(let i = 0;i < 10; i++){//...}

论断
从久远来看,遵循这些约定将使您受益匪浅。当你跟着他们写代码时,不论谁也在用它,这个人会本人了解所有。集体和团队都须要洁净的代码。
感谢您的浏览。祝你有美妙的一天。

[[作者: 吴宏伟]](https://wuxiongwei.com)

退出移动版