干净的代码 - 基本要做的
#javascript #网络开发人员 #编程 #braziliandevs

让我们谈谈一个良好的编程练习,即干净的代码。
我不想让这个主题很复杂,我认为有些过分。当然,随着时间的流逝和更大的资历,您的发展很高,但我想展示一些我相信所有人都应该做的时刻。

由于罗伯特·马丁(Robert C.他意识到编程大多数是在过程中进行维护。

清洁代码或干净的目的是简单的,具有清晰而客观的阅读。

一种肮脏的方式可能是造成这段时间的最大问题之一,很难理解另一个开发人员所做的事情或具有多种职责的功能,这使得很难改变。P> p>

但是,如果您现在从该区域开始,甚至没有寻找空缺,那就算了。专注于学习程序的基本程序,然后您是关于良好实践的。

我将在JavaScript中显示一些示例,但是该概念都适用于所有语言。

除了我称之为“市场模式”的那些,还有团队定义的模式。

免责声明:您不需要像我完全一样做,如果您认为定价要清洁,那可能没有错。

名称

// Bad
// Use explanatory variables

complete = true
elapsedTime = 5
date = moment().format('YYYY/MM/DD');
n = 'Raphael'

function addToDate(date, days) {
    console.log(date.getDate() + days)
}
const date = new Date();
addToDate(date, 1);

在上面的示例中,我们看到变量和函数的名称并不能非常清楚该值。这只是从幻想中识别的方式中的摘录,但可以想象一个大型项目。

在代码中的“干净代码”注释中,应专门用于纪录片,并且不解释代码的功能,他的名称必须足够清晰。

一个很好的例子:

// Good

isComplete = true
elapsedTimeinDays = 5
currentDate = moment().format('YYYY/MM/DD');
userName =  'Raphael'

function addDaysToDate(todayDate, days) {
    console.log(todayDate.getDate() + days)
}
const todayDate = new Date();
addToDate(todayDate, 1);

funã§ãµs

理想是一个函数没有超过3个部分。对于那些没有创建它的人来说,当许多人何时会很费力并生成测试时,预期价值是如何的。

具有多个责任的功能也被认为是一种好实践。

SOLID的第一原则,单一责任原则或对NICA的责任原则说,班级只有一个理由改变,即,必须具有等级责任。在下面的课程中,该功能有两个职责,创建常规并发送电子邮件。

// Bad
// Use 2 or fewer ideally arguments
// The function must have single responsibility

function createUserAndSendEmail(name, city, jobId, active) {
    console.log(name)
    console.log('email sent')
}
createUserAndSendEmail('Raphael', 'Uberlândia', 5, true);

在VaniosParães的发明中,您可以通过对象。
还可以分开责任,用
发挥功能 责任。

// Good

function createUser({name, city, jobId, active}) {
    console.log(name)
}
function sendEmail() {
    console.log('email sent')
}
createUser({
    name: 'Raphael',
    city: 'Uberlândia',
    jobId: 5,
    active: true
});
sendEmail();

有条件

我们可以避免使用early return的练习,包括您的习惯,您可以检查您想要的相反并尽可能返回以结束功能。

// Bad

const checkShipping = (totalToFreeShipping) => {
    if (!isNaN(totalToFreeShipping)) {
        if (totalPrice> totalToFreeShipping) {
            setFreeShipping();
        } else {
            calculateShipping();
        }
    } else {
        console.log('Value is not valid!')
    }
}

checkShipping(80);

agora com早期返回

const checkShipping = (totalToFreeShipping) => {
    // Early return. Validate possible problems before the “happy path”
    if (isNaN(totalToFreeShipping)) return console.log('Value is not valid!');

    if (totalPrice > totalToFreeShipping) {
        setFreeShipping();
        return;
    }

    calculateShipping();
}

checkShippin(80);

一个具有对象文字的示例,避免开关。

// Bad

const {role} = Subscriber

switch(role) {
  case ADMINISTRATOR:
    return <AdministratorUser />
  case EDITOR:
    return <EditorUser/>
  case Subscriber:
    return <SubscriberUser/>
}

// Good

const {role} = Subscriber

const components = {
  ADMINISTRATOR: AdministratorUser,
  EDITOR: EditorUser,
  Subscriber: SubscriberUser
};

const Component = components[role];

return <Componenent />;

componentiza㧣o没有前端

使用较小的组件,我们可以重复使用代码,上下文隔离和最佳可读性。

存储库,示例:https://github.com/raphaelramos/cleancode-examples/

您也可以在现场编码中查看视频

Vídeo Clean Code Exemplos