Escribo una clase para encapsular algunas reglas de negocio, cada una de las cuales está representada por un valor booleano. La clase se usará para procesar un formulario de InfoPath, de modo que las reglas obtengan el estado actual del programa al buscar valores en una estructura de datos XML global utilizando las operaciones de XPath. ¿Cuál es la mejor forma (más idiomática) de exponer estas reglas a las personas que llaman: propiedades o métodos públicos?¿Utiliza propiedades o métodos para exponer reglas comerciales en C#?
llamada utilizando propiedades
Rules rules = new Rules();
if (rules.ProjectRequiresApproval) {
// get approval
} else {
// skip approval
}
llamada utilizando métodos clase
Rules rules = new Rules();
if (rules.ProjectRequiresApproval()) {
// get approval
} else {
// skip approval
}
Reglas exponer reglas como propiedades
public class Rules() {
private int _amount;
private int threshold = 100;
public Rules() {
_amount = someExpensiveXpathOperation;
}
// rule property
public bool ProjectRequiresApproval {
get { return _amount > threshold }
}
}
reglas de clase exponiendo reglas que los métodos
public class Rules() {
private int _amount;
private int threshold = 100;
public Rules() {
_amount = someExpensiveXpathOperation;
}
// rule method
public bool ProjectRequiresApproval() {
return _amount > threshold;
}
}
¿Cuáles son los pros y los contras de uno sobre el otro?
Probablemente quiera poner get {...} en la definición de su propiedad. –
d'oh, sí, arreglado – Val