Existe la sensación de que existe una cierta brecha entre la práctica a la que te enfrentas cuando comienzas a trabajar como programador y la teoría en la que te sumerges. No es una contradicción, solo una pequeña mancha blanca. Toda la teoría se centra en estructuras de datos, algoritmos, patrones, paradigmas y principios. La práctica (léase "hacer dinero") gira en torno a la relación y la comunicación de las personas, las partes del contrato para la fabricación de productos de software para resolver sus problemas comerciales urgentes, a menudo muy mundanos. Y la situación se vuelve lo más irónica posible cuando, con el conocimiento de todos estos principios y buenas prácticas en la tarea de hacer una tienda de Internet condicional, obtenemos un código terriblemente confuso y el proyecto se rinde como una hazaña. Quiero compartir una idea metafórica,que para mí funciona como un eslabón perdido entre las cuestiones superiores de las estructuras-algoritmos y las preguntas mundanas de los usuarios "¿Dónde se ha ido mi botón favorito? !!".
m-
: “ ” “ ”. : “ , “” ()”.
-
button_salaries.Visible = user.Permissions == Permission.Max
, - . , , , , - , - . - ?
, , , :
if (user.Permission < Permission.Max) throw new Exception()
, , , - , “ ”, , , - , . - .
, - . - - . “m-” “Machines”. , , “” .
- “, ?!!” , . - , - . , , , “ ” - . . , - - - ? , , “” “ ” - .
h-
, , - “” - . , ? . , : , m-. - - h- (“Humans”).
, , m-. , , , UI : , .
, ? - Salaries
try..catch
, , , m-. , . -. , - , . h- : , - . , , , , - .
- , “! ! !” -, . , , , - , - , ? - .
, , , m- . , Salaries
. , - , - .
bool Salary(User user) => user.Permission < Permission.Max;
, , .
if (!Permissions.Salary(user)) throw new Exception();
? , “”. - m- - . - h- . m- - .
, - , . - - , .
, h- , “” : . , - , “ ! !” h- UX .
- . m- , h- ui-, .. . 0 null - UI- - ?
, h- - - , , .
d-
“ ”. 1 , (Permission.Min
) 2 , (Permission.Middle
).
, m- :
void Job(Permission p)
{
if (p == Permisson.Min) Counter = Counter + 1;
if (p == Permissiio.Middle) Counter = Counter + 2;
}
, : , ,
- - , ? , - BetweenMinAndMiddle
? , . , “, - . - ”.
- , , , . , - - . , , , “ ”. m-. p, - , , : ? , - - - . ?
? . - 0 , - - , . , - ( ). , - - . , .
, - , d-? , m- , “” , , . , d- - , , Fatal, Error, Warning . ( , .)
, , h- - , . , , Test()
(!Permission.Salary(user) && button_salary.Visible) Warning(“ , !”)
d- . , ? “, - !”.
HMD
. , . , , - . , , ( ) , .
, , , , , . - try..catch
, - . , m-, .
, , . , , , d- - .
, , . , hmd- - - - .
, - m- - , h- , . .
h- , d-. , , . h- .
h-, , , . UI-, - “-”.
m- . , - " " .
, , - - , . “” , , .
, - “” - “” - .
, “ ”, “ UI” - “ ”.
, , , : “ ”. , “ ” , . , . hmd , . , , , , . , , - .
Según tengo entendido, para hacer un buen software, debe perseguir dos objetivos: fabricar correctamente cada uno de sus componentes individuales y luego conectar estos componentes correctamente. Con suerte, la metáfora de este artículo puede ayudarte con ambos.