Notas sobre el estilo de código

Muy a menudo me encuentro con una pregunta sobre la calidad del código: "¿Por qué está escrito de esta manera y no así?". Y lo explico todo el tiempo. Por eso decidí escribir una especie de nota con explicaciones.





La segunda pregunta que surge es: "¿Dónde aprendiste a escribir tan bellamente?" La respuesta será al final del artículo.






Un problema bastante común al escribir código es que parece un texto sólido y contiene áreas problemáticas que complican no solo la lectura, sino también el mantenimiento adicional. En tales casos, no debe descuidar el uso de saltos de línea y caracteres de "espacio" adicionales.





Recordé una anécdota barbuda sobre hechos reales:





El desarrollador lee su código escrito:





- hoy: ¡genial código moderno y genial! ¡Siempre escribiría así!





- ayer: entonces, paré aquí. ¡Ajá!





- la semana pasada: ¿qué estaba haciendo allí? ..





- el mes pasado: entonces, ¿dónde está el problema con la descripción?





- el año pasado: ¡para romperle las piernas al que escribió este código!






Recientemente encontré un código de este tipo (lo insertaré con una imagen para no interrumpir su apariencia):





- , , ...





. . - .





. . , , ? , .






, .





- , - .





:





$salaryFirstBaseEmployer = $employer->salaryBases->first()->salary_base;
$salaryLastBaseEmployer = $employer->salaryBases->last()->salary_base;
$begin = Carbon::parse('2020-05-01')->startOfMonth()->startOfDay();
$end = $begin->clone()->endOfMonth()->endOfDay();
$endMonth = $begin->clone()->endOfMonth();
$startPeriod = new CarbonPeriod($begin, $end);
$endPeriod = new CarbonPeriod($begin, $end);
      
      



, , , :





$salaryFirstBaseEmployer = $employer->salaryBases->first()->salary_base;
$salaryLastBaseEmployer  = $employer->salaryBases->last()->salary_base;

$begin = Carbon::parse('2020-05-01')->startOfMonth()->startOfDay();

$end      = $begin->clone()->endOfMonth()->endOfDay();
$endMonth = $begin->clone()->endOfMonth();

$startPeriod = new CarbonPeriod($begin, $end);
$endPeriod   = new CarbonPeriod($begin, $end);
      
      



:





, -, .





, .





PD: Varias personas, incluidos los mensajes fuera de Habr, ya han escrito que existen cosas como PSR, autocompletado de código, formateo de código en el IDE, cs-fixer, etc. ¿De verdad crees que no soy consciente de su existencia? El problema, revelado en el artículo, no es que no se utilicen, sino ¿qué impide inicialmente escribir código de forma hermosa sin prender fuego a los pedos de otros desarrolladores? ..





PS2: Dio la casualidad de que la abrumadora mayoría de los comentaristas se dieron cuenta de los ejemplos del artículo y obtuvieron una puntuación en su mensaje principal. En este sentido, he eliminado todos los ejemplos que no tienen una carga semántica e importancia para el artículo como tal.








All Articles