Una bobada para pensar un rato, de esas que me gusta tirar en las primeras clases: ¿qué está mal en este código, y por qué?
public decimal Suma(decimal a, decimal b) { return a-b; }
Obviamente el "por qué" es lo más importante de la respuesta. No consulten ninguna fuente (pierde la gracia), sólo sigan su instinto y, si quieren, dejen un comentario (sin mirar antes los de los demás).
Actualización: el tema se resuelve (en parte) en La “respuesta” a “¿Cuál es el error?”, la ambigüedad, su resolución y, finalmente, la realidad.
12 comentarios:
Si lo pones en negrita es demasiado fácil :)
El nombre del metodo es Suma y devuelve una resta. Es tonto pero al programar, un error como este puede hacernos perder horas al tratar de encontrarlo y mas si el codigo es extenso
@Anónimo1: Sí, es facil... ¿y la respuesta?
@lenoardo.sly: Estamos de acuerdo en el análisis de la situación, pero ¿cuál es el error? ¿el nombre? ¿el "-" debería ser "+"? ¿por qué?
Pues a simple vista el error está en el "-" que debería ser un "+" para que sea una suma, claro que si siempre pasas b como negativo pero te interesa sumar su valor absoluto entonces puede que esté correcto o.O
Conclusión, como dijo Einstein: "Todo es relativo"
La implementacion de la funcion esta bien, lo que falla es la falta de documentacion de la misma. Un comentario explicando la intencion de la funcion, dejaria ver si es un error o no que la funcion se llame Suma y retorne una resta.
Saludos!!
Le veo 2 problemas... uno que no se si la función tiene que sumar y esta restando porque el programador se equivocó, o si la función tiene que restar y lo que está mal puesto es el nombre... y el otro... que no tengo garantía que la resta de dos decimales (o la suma, es lo mismo) no me devuelva un overflow... me puedo estar pasando del rango.
A expensas de la funcionalidad indicada Suma no seguiría las normas de codificación de nombres la S debería de ser minúscula para facilitar la lectura en otros puntos del código.
@blpgirl: ¡Jugate! ¿Qué hacemos? ¿Por qué?
@Anónimo2: Un comentario ayudaría. Pero... ¿Por qué? ¿Por qué confiarías más en un comentario que en el nombre de la función o que su implementación?
@Nicolás: bien pero... ¿Qué hacemos? Y si los argumentos hacen que se pasen de rango ¿eso es un problema de la función?
@Anónimo3: Ni. Es una posibilidad bastante utilizada. En mi trabajo utilizamos el documento de Lance Hunt, que especifica pascal-case para todos los métodos (públicos y privados). De todas maneras, siempre dije que en realidad es cuestión de gustos, y que en todo caso no importa tanto el estilo (siempre y cuando sea mínimamente prolijo) sino que se utilice consistentemente dentro de un proyecto.
El error está en querer hacer una función que tome dos parámetros y devuelva una operación entre éstos dos parámetros sin hacer nada mas.
En vez de llamar a la función Suma(a,b), simplemente se puede hacer "parametroA - parametroB" y el código queda mas legible (si dice " - " QUIZO hacer una resta y no otra cosa), y me ahorro un método.
Para mi si la funcion se llama suma y despues resta hay dos posibilidades:
1- Que este bien a fines de que el programa haga lo que se necesita aunque otra persona lo mire y no entienda nada!
2- Que este mal ya que despues lo tiene que mirar otra persona y deducir que quizo hacer este programador...
NO HAY UNA RESPUESTA JEJ
Saludos
Segun yo la funcion es suma y el codigo resta jajaja
Gracias a todos por los comentarios. La respuesta es... La “respuesta” a “¿Cuál es el error?”, la ambigüedad, su resolución y, finalmente, la realidad.
.
Publicar un comentario