2013-05-17 12 views
7

Esempio: ho una classe Person e una classe Role. Voglio estrarre la funzionalità di ruolo da entrambi e Person in un mixin. Ottengo due mix: Actable da includere in Role e Adaptable per Person.In Ruby, quali sono le convenzioni di denominazione per i mixaggi quando non esiste un inglese corretto "<verb> capable"?

A volte non riesco a pensare a una parola inglese corretta che si adatta. Nell'esempio precedente, l'adattabile sembra più adatto per i ruoli che per le persone, perché i ruoli possono essere adattati e quindi sono adattabili. Un nome migliore sarebbe versatile ma che rompe la convenzione dei nomi mixin con termine in ... in grado. (È comunque un aggettivo.)

Altro esempio è quando voglio aggiungere un modulo che consenta il controllo, se una persona è autorizzata a vedere altre persone. Come trovi un nome per quel finale in ... in grado? Viewable sembra appropriato, la persona che è possibile visualizzare dovrebbe essere visibile. Per ora mi sono attenuto a showable (adattandolo con il nome del metodo nel controller). Ma poi di nuovo, è la Persona che può essere mostrata, che dovrebbe essere visibile non alla persona che vuole mostrare.

Quindi suppongo che la mia domanda sia, Quando non c'è un aggettivo inglese appropriato che finisca in ... in grado di un nome modulo, dovrei scegliere un altro aggettivo che non finisce in ... in grado o dovrei dargli un nome che non si adatta perfettamente?

risposta

1

Tendo ad andare verboso e denominare moduli con una descrizione più lunga del codice che includono; qualcosa del tipo: PersonRoleFunctionality

Spesso lo nomino anche in questo caso; e file con altri mixin sotto una directory che si applica all'oggetto è stato estratto da, così finisco con include Extracts:Person:RoleFunctionality nella directory app\models\extracts\person\

1

Che ne dite di un prefisso, allora?

CanDoSomethingMoreComplexThanASingleVerb 

edit: Pur comprendendo che non sto offrendo una convenzione per sé (grazie arulmr per aver portato in su), il Can Convenzione di denominazione per descrivere qualcosa è parte di standard di denominazione localizzate de facto in molte aziende, in quanto consente una descrizione più dettagliata della funzionalità che si sta tentando di mixare. per esempio. CanAct e CanBeCastInPlay sono proprietà distinte che utilizzano il contesto dell'autore originale di Person e Role e sono più facili da comprendere e comprendere rispetto a Actable e PlayCastable o altri equivalenti.

Bottom line: non essere vincolato solo dalla lingua e dalle convenzioni :)