Su compañero de trabajo realmente está intentando aplicar el diseño por contrato (DbC) del lenguaje Eiffel y basado en el libro: Construcción de software orientado a objetos, 2da edición.
La aserción, tal como la usó, sería la {P} -parte de la lógica de Hoare o el triple de Hoare: {P} C {Q}, donde {P} es la precondición (ion) sy {Q} son las afirmaciones posteriores a la condición.
Tomaría nota crítica de los consejos dados sobre la función de aserción en PHP que tiene errores. No quieres usar código con errores. Lo que realmente quiere es que los creadores de PHP corrijan el error en la aserción. Hasta que lo hagan, puede utilizar la aserción, pero utilícela teniendo en cuenta su actual estado defectuoso.
Además, si la función de aserción tiene errores, le sugiero que no la use en el código de producción. Sin embargo, le recomiendo que lo use en el desarrollo y en el código de prueba cuando sea apropiado.
Finalmente, si realiza un estudio de diseño por contrato, encontrará que el uso de aserciones booleanas a la luz de la herencia clásica orientada a objetos tiene consecuencias, es decir, nunca debe debilitar una condición previa ni debilitar una condición posterior. Hacerlo podría ser peligroso para los objetos descendientes polimórficos que interactúan entre sí. Hasta que comprenda lo que eso significa, ¡lo dejaría en paz!
Además, recomiendo encarecidamente que los creadores de PHP realicen un estudio completo del diseño por contrato e intenten ponerlo en PHP lo antes posible. Entonces, todos podemos beneficiarnos de tener un compilador / intérprete compatible con DbC, que manejaría los problemas señalados en las respuestas (arriba):
- Un compilador consciente de diseño por contrato implementado correctamente (con suerte) estaría libre de errores (a diferencia de la afirmación actual de PHP).
- ¡Un compilador consciente de diseño por contrato correctamente implementado manejaría los matices de la gestión de la lógica de aserción polimórfica por usted en lugar de atormentar su cerebro por el asunto!
NOTA: Incluso el uso de una if
declaración -como sustituto de la aserción (condición previa) sufrirá consecuencias nefastas si se usa para fortalecer una condición previa o debilitar una condición posterior. Para comprender lo que eso significa, ¡necesitará estudiar diseño por contrato para saberlo! :-)
Feliz estudiando y aprendiendo.
'isset
(la línea de código conassert
)? ¿No soloisset
(sin las comillas simples'
)?