In primo luogo, questo non ha nulla a che fare con la programmazione orientata agli oggetti. Hai esattamente lo stesso problema con le normali chiamate alle vecchie funzioni, e il problema è che se un parametro è solo "vero" o "falso", allora il lettore del codice non ha la possibilità di capire cosa fa il codice, eccetto se è l'unico parametro di una funzione opportunamente denominata: object- > setVisible (true) è assolutamente soddisfacente.
Ci sono lingue in cui i parametri sono nominati in una chiamata. Ad esempio, object.setOptions (visible: true, opaque: false, animated: true) è di nuovo soddisfacente. Ma object.setOptions (true, false, true) è un grosso problema, perché solo leggendo quella riga di codice non ho idea di cosa stia succedendo. Non so quali sono i parametri e sicuramente non ho idea del loro ordine. In questo caso, usando enum e chiamando object.setOptions (eVisible, eTransparent, eAnimated) va di nuovo bene. Enum, non costanti impostate su valori booleani.
Quel che è peggio è che non solo non so cosa significhi il tuo codice, il compilatore può anche non aiutarti se sbagli. object.setOptions (false, true, true) si compila bene e dà risultati completamente sbagliati. si spera che object.setOptions (eTransparent, eVisible, eAnimated) non venga compilato, in modo da poter risolvere immediatamente il problema.