Quale principio viene violato dall'avere un pulsante fa due cose o schermi radicalmente diversi agiscono in modo radicalmente diverso a seconda della situazione

3

Mi sono imbattuto in una situazione più volte nella mia carriera quando i precedenti sviluppatori hanno fatto qualcosa di divertente.

Faranno una funzione di controllo (pulsante) radicalmente diversa a seconda di come è stato aperto lo schermo o di qualche altra condizione nei dati (ad esempio, salvare i dati in un file txt, fare un ricalcolo di qualcosa e memorizzarlo in un campo del database). Se sei fortunato, hanno cambiato la didascalia sul pulsante quando cambiano la funzionalità.

Li ho visti anche cambiare il layout dello schermo (nascondere i controlli, rinominarli, mostrare sezioni completamente nuove). Anche in questo caso, spesso cambiano anche la didascalia della finestra.

Questo sembra essere un anti-pattern, perché rende difficile per i futuri sviluppatori capire quale controllo / controllo uno qualsiasi fa senza percorrere a piedi il codice e il testing. E la tentazione che stanno cadendo per quello che pensano di risparmiare tempo per creare un secondo modulo creando uno che funziona in modo diverso per condizioni diverse.

Quale principio viene violato qui? Conosco il principio di responsabilità unica; ma non sembra essere perfetto. Penso che sia più vicino a "non farlo perché confonde il diavolo degli utenti", ma non sono sicuro che ci sia qualcosa di formale a cui possa puntare.

    
posta BIBD 20.03.2015 - 04:42
fonte

2 risposte

14

È consistenza , o anche "principio di minimo stupore".

Tuttavia, anche la tua definizione meno formale sembra soddisfacente, più pragmatica.

    
risposta data 20.03.2015 - 07:51
fonte
4

Direi che è il Principio di responsabilità singola .

Anche se è stato applicato per la prima volta all'Object Orientation, il principio sottostante è valido anche su ambienti non OO - one thing, one job .

In object-oriented programming, the single responsibility principle states that every class should have responsibility over a single part of the functionality provided by the software, and that responsibility should be entirely encapsulated by the class. All its services should be narrowly aligned with that responsibility.

    
risposta data 20.03.2015 - 16:07
fonte