林波岛的三个想法

2025-06-04

林波岛的三个想法

普罗洛戈

A pergunta mais Constante entre os desenvolvedores que estão querendo sair do nível Júnior para Pleno é “será que meu código tá uma merda?” ou“beleza isso funciona,mas como melhorar esse lixo?”这是一个关于产品质量的问题,它是(数字)进化的产物。

那么,在所有重要的事情中,最后都没有最后的内容,那么重要的工程和技术,是如何通过CRUD 和序列X来作为语言在 TODAS 上进行复制的,有什么吗?徽标,se você sabe a teoria/engenharia,a pratica só precisa da ferramenta/linguagem。

集市上,大家都知道/padrões que podem estar ligados diretetamente qualidade do código entregue,onde nos deveriamos nos preocupar muito mais do que sobre“qual Framework usar”。

我们学到了什么?

Nesse post,quero dar exemplos de conceitos e métodologias para que possamos melhorar nosso código。仙道元素:

  • DRY(不要重复自己)
  • 提前回归(反波动拳)
  • KISS(保持简单愚蠢)

1.不要重复自己(DRY)

O tal do DRY é algo bem visto quando or assunto éabstração.原则上的一个想法是,我们必须重复这些原则,以使其抽象化。您可以通过以下方式了解这两种情况的信息,并根据争论进行修改。

Não enendeu?相关联赛:

class UserRepository {

    public function createUser(array $payload): bool
    {
        $query = $this->pdo->prepare('SELECT * FROM users WHERE email = :email');
        $query->bindParam(':email', $payload['email'], PDO::PARAM_STR);
        $query->execute();

        if ($query->count()) {
            throw new Exception('E-mail já cadastrado');
        }

        $query = $query->prepare('INSERT INTO users values (null,:name,:email, :password)');

        return $query->execute();
    }

    public function getUser(string $email): ?array
    {
        $query = $this->pdo->prepare('SELECT * FROM users WHERE email = :email');
        $query->bindParam(':email', $email, PDO::PARAM_STR);
        $query->execute();

        if (!$query->count()) {
            throw new Exception('Usuário inexistente.');
        }

        return $query->fetch(PDO::FETCH_ASSOC);
    }

}

Enter fullscreen mode Exit fullscreen mode

例如,在 5 分钟的时间里,您可以通过查询createUser和查询getUser进行重复操作,但不需要重复操作,因此您可以使用激光雷达来完成这些操作。

南美联赛:

class UserRepository {

    public function createUser(array $payload): bool
    {
        $query = $this->getUserByEmail($payload['email']);

        if (count($query)) {
            throw new Exception('E-mail já cadastrado');
        }

        $query = $query->prepare('INSERT INTO users values (null,:name,:email, :password)');

        return $query->execute();
    }

    public function getUser(string $email): ?array
    {
        $query = $this->getUserByEmail($email);

        if (! count($query)) {
            throw new Exception('Usuário inexistente.');
        }

        return $query->fetch(PDO::FETCH_ASSOC);
    }

    public function getUserByEmail(string $email): array
    {
        $query = $this->pdo->prepare('SELECT * FROM users WHERE email = :email');
        $query->bindParam(':email', $email, PDO::PARAM_STR);
        $query->execute();

        return $query->fetch(PDO::FETCH_ASSOC);
    }

}

Enter fullscreen mode Exit fullscreen mode

Isolamos uma abstração em uma única função e usamos ela em 2 lugares eo código ainda ficou um pouco mais Legível (desde que você dê um nome bacana pra sua função Abstraida)。 Bacana né? Se a galera juninha prestasse atenção nesse Tipo de coisa desde o dia Zero já teriamos carros voadores :p

2. 提前退还声明

贝莱扎(Beleza),集市上的复杂性:如果/else um dentro do outro parecendo um hadouken?请注意,我希望您能在未来做好准备,并为未来的发展做好准备。在此,我将向大家介绍一下维多利亚的主要开发者和遗产(包括欧盟)。

你想知道什么是hadouken吗? É isso aqui ó:


class AuthRepository
{
    public function adminAuthenticate(array $credentials): bool
    {
        if ($user = User::where('email', $credentials['email'])) {
            $password = Hash::verify($user->password, $credentials['password']);
            if($password) {
                if ($user->isAdmin) {
                    Auth::login($user);
                    return true;
                }else {
                    throw new UnauthorizedException('vc n é um admin seu merda');
                }
            } else {
                throw new UnauthorizedException('senha errada seu otário');
            }
        } else {
            throw new UnauthorizedException('ce nem existe no meu banco wtf');
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Acho que nesse exemplo deu pra entender o conceito de hadouken,né?如果没有其他感觉,请继续进行下去,以增强一种复杂性。集市上,有一个关于早归的逻辑,一个美好的愿望。

但是:请注意以下事项:主要条件是要恢复之前的功能。您可能会发现错误并没有任何功能。 Não enendeu? Vamos pra prática então:


class AuthRepository
{
    public function adminAuthenticate(array $credentials): bool
    {
        $user = User::where('email', $credentials['email'])
        if (!$user) {
            throw new UnauthorizedException('ce nem existe no meu banco wtf');
        }

        $password = Hash::verify($user->password, $credentials['password']);
        if (!$password) {
            throw new UnauthorizedException('senha errada seu otário');
        }

        if (!$user->isAdmin) {
            throw new UnauthorizedException('vc n é um admin seu merda');
        }

        Auth::login($user);
        return true;
    }
}
Enter fullscreen mode Exit fullscreen mode

无论如何,我们必须遵守以下条件:重新启动或重新启动,以确保法律法规的合法性。 O 提前返回 vem sendo cada vez mais citados por devs e empresas como algo obrigatório pra criar um código bacana e saber isso com certeza vai te deixar a frente de uma galera.

马斯丹尼尔,不使用其他东西吗? Bom,isso fica inteiramente pra você。 Eu não gosto, mas tem vezes que não dá pra fugir。 Fica ai a reflexão :p

3. 保持简单愚蠢(KISS)

卡拉,是一个合法的逻辑工具和软件软件,并且可以在短时间内使用专有语言,并且可以立即获得认证。 Então,pra quê?!正如我们所说的那样,简单地说,这是一个长久以来的美好愿望,也是我们在冈比亚发展生活的一个长期过程,也是一个积极的方面。

Vamos um 的示例是 bloco de código zoado 和 uma versão desse mesmo bloco porém simples:

// Jeito zoado
function getOAuthProvider(string $providerId) {
    switch($providerId) {
        case 0:
            return 'twitch';
        case 1:
            return 'discord';
        case 2:
            return 'twitter';
        case 3: 
            return 'google';
        case 4: 
            return 'facebook';
    }
}

// Jeito simples
function getOAuthProvider(string $providerId) {
    $providers = ['twitch', 'discord', 'twitter', 'google', 'facebook'];
    return $providers[$providerId];
}

Enter fullscreen mode Exit fullscreen mode

附加的开关盒编号是多少,以便重新排列阵列?永远是最复杂的、最伟大的、最简单的可能。

Gostou desse 帖子? Clica no coraçãozinho e me siga nas redes sociais!

文章来源:https://dev.to/danielhe4rt/tres-conceitos-para-um-codigo-limpo-3mdo
PREV
JavaScript 基本类型转换速查表🔥 字符串转换 布尔类型转换 数字类型转换 空类型转换 未定义类型转换
NEXT
Otimizando seu tempo 程序在 IDE 的 JetBrains 中