林波岛的三个想法
普罗洛戈
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);
}
}
例如,在 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);
}
}
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');
}
}
}
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;
}
}
无论如何,我们必须遵守以下条件:重新启动或重新启动,以确保法律法规的合法性。 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];
}
附加的开关盒编号是多少,以便重新排列阵列?永远是最复杂的、最伟大的、最简单的可能。
Gostou desse 帖子? Clica no coraçãozinho e me siga nas redes sociais!
文章来源:https://dev.to/danielhe4rt/tres-conceitos-para-um-codigo-limpo-3mdo