Mas é 100%
PHP Evangelist
FullStack Developer
PHP com Rapadura
Professor de Desenvolvimento Web
Uncle Bob
1 - Código Limpo
2 - Nomes Significativos
3 - Funções
4 - Comentários
5 - Formatação
7 - Tratamento de Erros
9 - Testes de Unidade
10 - Classes
Dev: "chefe, vou ter q atrasar a entrega"
Chefe: "Rapaz, te vira. Lá em cima daquele armário tem uma caixa, aí tem uma roupa verde, de sapo, pega ela, veste e dá teus pulo."
Dev: "chefe, vou ter q atrasar a entrega"
Chefe: "Rapaz, confio na sua capacidade."
"nomes de variáveis limpas, nomes de funções limpas, nomes de classes limpas. Estruturas do código de facil entendimento, códigos explícitos."
Uncle Bob
"código elegante e eficiente com lógica direta que dificulte um alojamento para bugs"
Bjarn Stroustrup
<?php
$a = 'Alessandro';
$b = 'eu@alessandrofeitoza.eu';
$c = 22;
$d = 'tesudo';
<?php
$name = 'Alessandro';
$email = 'eu@email.eu';
$idade = 22;
$nickname = 'ale_tesudo';
<?php
o = 1;
if (o == 1) {
a = 0l;
} else {
a = o1;
}
public function dtaRcd102();
public function svUsGroup();
public function dataRecord();
public function saveUserInGroup();
<?php
function saveUser(
string $name,
string $email,
string $password,
bool $status,
string $phone,
string $type
) {
...
}
<?php
function saveUser(User $user)
{
...
}
<?php
if (saveUser() === 1) {
...
}
if (saveUser() === false) {
...
}
if (saveUser() !== false) {
...
}
<?php
function saveUser()
{
if ($password === '123') {
return false;
}
execute();
if (error()) {
return "error 01";
}
}
<?php
try {
saveUser();
} catch (PasswordInvalidException $e) {
...
} catch (LogicException $e) {
...
}
<?php
function saveUser()
{
if ($password === '123') {
throw new PasswordInvalidException();
}
execute();
if (error()) {
throw new LogicException('message here');
}
}
<?php
try {
if ( x() ) {
$this->facaIsso();
}
$this->comandoGeral();
} catch (\Exception $exception) {
try {
comando1();
comando2();
comando3();
} catch (\Exception $exception) {
try ...
return false;
}
}
<?php
// função pra buscar todos os usuários
public function findAllUsers(): array
{
//abrindo conexão com o banco
$connection = $this->openConnection();
//retornando um array com todos os usuários
return $connection->findAll(User::class);
}
<?php
/* função pra adicionar um novo usuário.
* a função validára se já existe um usuário com o email
* e gerará uma Exception caso o email já exista.
*/
public function addProduct(Product $product): void
{
$this->entityManager->persist($product);
}
<?php
public function updateUser(User $user, Request $request): void
{
$user->setName($request->get('name'));
$user->setEmail($request->get('email'));
if ($request->get('password')) {
$user->setPassword(
$this->passwordSecurity->encrypt(
$request->get('password')
)
);
}
$this->entityManager->persist($user);
$this->entityManager->flush();
}
<?php
public function updateUser(User $user, Request $request): void
{
$user->setName($request->get('name'));
$user->setEmail($request->get('email'));
if ($request->get('password')) {
$user->setPassword(
$this->passwordSecurity->encrypt(
$request->get('password')
)
);
}
$this->entityManager->persist($user);
$this->entityManager->flush();
}
<?php
public function updateUser(User $user, Request $request): void
{
$user->setName($request->get('name'));
$user->setEmail($request->get('email'));
if ($request->get('password')) {
$user->setPassword(
$this->passwordSecurity->encrypt(
$request->get('password')
)
);
}
$this->entityManager->persist($user);
$this->entityManager->flush();
}
class InvalidNumberException extends \InvalidException
{
}
class EmailServiceException extends \Exception
{
}
class User
{
/** @var string $name */
private $name;
/** @var string $email */
private $email;
/** @var int $age */
private $age;
/** @var bool $status */
private $status;
/** @var Address $address */
private $address;
}
class User
{
private string $name;
private string $email;
private int $age;
private bool $status;
private Address $address;
}
Typed Properties
Qualquer programador consegue fazer códigos pra computadores entenderem, mas apenas Bons Programadores fazem código que humanos entendem.
Martin Fowler
facebook.com/hashtag/PHPnaMarra
twitter.com/hashtag/PHPnaMarra
Alessandro Feitoza
eu@alessandrofeitoza.eu
@alessandro_feitoza
@feitozaAle
phpcomrapadura.org