Calculadora de ahorro de jubilación -- # campo con .net camp codereview Relacionados El problema

Retirement-saving calculator


3
vote

problema

Español

Hice una pregunta de matemáticas y esperaba que alguien también pudiera echarle un vistazo al Código para mí. Desafortunadamente, es posible que tenga que ir a ver la pregunta original aquí .

  GoogleApiClient0  

Editar:

Si debo depurar correctamente, el PVG anterior (línea repetido a continuación) devuelve 0

  GoogleApiClient1  

Editar:

Aquí está la calculadora: http://excey.myib.co.za/calc

Original en ingles

I asked a math question and was hoping someone could have a look at the code for me as well. Unfortunately you might have to go look at the original question here.

protected void ButtonCalRetire_Click(object sender, EventArgs e) { double FVc = 0; double FVd = 0; double PV = double.Parse(TextBoxCurrentSave.Text); double i = double.Parse(TextBoxRoR.Text) / 100; double b = (double)(int.Parse(TextBoxRetireAge.Text) - int.Parse(TextBoxCurrentAge.Text)); double R1 = double.Parse(TextBoxCurrentMonthlyContribution.Text); double g2 = double.Parse(TextBoxAnnuityGrowthRetire.Text) / 100;  FVc = PV * Math.Pow((1 + i / 12), (b * 12));   FVd = R1 * (Math.Pow((1 + i / 12), (b * 12)) - Math.Pow((1 + g2 / 12), (b * 12))) / ((i / 12) - (g2 / 12));   double totSaved = FVc + FVd;  double R2 = double.Parse(TextBoxCurrentMonthlyContribution.Text); double n = (double)(int.Parse(TextBoxDeathAge.Text) - int.Parse(TextBoxRetireAge.Text));  double PVg = R2 * Math.Pow((1 + g2 / 12), (b * 12)) / (i / 12 - g2 / 12) * (1 - ((Math.Pow((1 + g2 / 12), (n * 12))) / (Math.Pow((1 + i / 12), (n * 12)))));  double diff = FVc + FVd - PVg;  double R3 = diff / (Math.Pow((1 + i / 12), (b * 12)) - Math.Pow((1 + g2 / 12), (b * 12))) / ((i / 12) - (g2 / 12));  LabelTotControNeeded.Text = (R3 + R2).ToString("R ### ##0.00"); LabelControNeeded.Text = R3.ToString("R ### ##0.00"); } 

Edit:

If I debug correctly, the PVg above (line repeated below) returns 0

double PVg = R2 * Math.Pow((1 + g2 / 12), (b * 12)) / (i / 12 - g2 / 12) * (1 - ((Math.Pow((1 + g2 / 12), (n * 12))) / (Math.Pow((1 + i / 12), (n * 12))))); 

Edit:

Here is the calculator: http://exceed.myib.co.za/calc

     
 
 

Lista de respuestas

5
 
vote

Convenciones de nombramiento

Como habrá notado desde el colorante: no está siguiendo las convenciones de nombramiento. Las variables dentro de un método son el cárcel inferior que significa esto

  FVc   

se convierte en este

  fvC   

Naming

Tus variables tienen nombres muy poco claros. Desde el contexto, sé que esto es parte de una fórmula matemática, pero podría aclararlos. Si es posible, considere usar palabras completas que expliquen claramente lo que significa esa variable.

En ese sentido definitivamente cambiaría esto

  totSaved    

en este

  totalSaved   

"Ahorro" 2 caracteres no es nada, pero reduce la legibilidad.

analizando

Analga los mismos campos de texto de texto muchas veces. En su lugar, analícelo una vez y ponlo una variable. Ahora puede hacer referencia a esa variable cada vez y será mucho más fácil trabajar.

Fórmula Clarity

También debe considerar dividir sus fórmulas largas (en la medida en que una parte de una fórmula tendría sentido) para ayudarlo en caso de que algo se debe depurar. Será más fácil verificar los valores intermedios y mantener la descripción general sobre lo que su fórmula representa.

 

Naming conventions

As you will have noticed from the coloring: you're not following naming conventions. Variables inside a method are lowerCamelCase which means this

FVc 

becomes this

fvC 

Naming

Your variables have very unclear names. From the context I know that this is part of a math formula, but you might be able to clarify them. If possible, consider using full words that clearly explain what that variable means.

In that regard I would definitely change this

totSaved  

into this

totalSaved 

"Saving" 2 characters is nothing, but it lowers readability.

Parsing

You parse the same textbox fields many times. Instead, parse it once and put it a variable. Now you can reference that variable every time and it will be a lot easier to work with.

Formula clarity

You should also consider splitting up your long formulas (insofar a portion of a formula would make sense) to help you in case something needs to be debugged. It will be easier to check intermediate values and to keep the overview over what your formula represents.

 
 
     
     

Relacionados problema

21  Determinar si se ha realizado una conexión en un dispositivo de comunicaciones  ( Determining if a connection has been made to a communications device ) 
No estoy seguro de si mi uso de '0','1','2','3'5 y '0','1','2','3'6 es correcto. Parece que funciona bien, pero hay una duda molesta que estoy haciendo al...

11  Nested Si las declaraciones con 3 parámetros diferentes  ( Nested if statements with 3 different parameters ) 
Tengo un bloque de código a continuación. El método allDone() en la parte inferior solo debe ejecutarse si el 9988776655544331 . Debe recorrer cada una de ...

19  Clase de matriz en C #  ( Matrix class in c ) 
He estado aprendiendo C # durante mi tiempo libre en los últimos meses; Antes de eso, en su mayoría estaba escribiendo Java, por lo que la transición no ha si...

5  Implementación de la cola prioritaria en C #  ( Priority queue implementation in c ) 
Mi aplicación tiene un hilo para el manejo de inserciones y actualizaciones de la base de datos. Los datos se añaden por otras roscas a una cola genérica en e...

3  Desernializando JSON con UTF8JsonReader  ( Deserializing json with utf8jsonreader ) 
Ruta del exilio es un juego de PC donde los jugadores pueden enumerar sus artículos para la venta. El juego tiene una API pública que sirve a JSON que conti...

10  Obteniendo la última fecha donde ocurrió un día de la semana dado  ( Getting the last date where a given week day occurred ) 
Estoy tratando de aprender un poco sobre la programación funcional y como mi herramienta, elegí F # ya que soy un desarrollador de .NET y el medio ambiente es...

2  Observable  ( Observablequeue ) 
Estoy buscando comentarios sobre esto. public sealed class ObservableQueue<T> : IObservable<T>, IDisposable { private readonly object _lock = new objec...

7  Colecciones vacías en caché  ( Cached empty collections ) 
A menudo necesito devolver las colecciones vacías. Uno de esos días, escribí lo siguiente para devolver una instancia en caché: public static class Array<...

11  ¿Se pueden mejorar estas pruebas de la unidad?  ( Can these unit tests be improved ) 
No soy el más grande en las pruebas de escritura aún y estoy iniciando un nuevo proyecto OSS para aprender y, como parte, quiero abordar ser más efectivo en l...

12  Intento de un algoritmo de clasificación  ( Attempt at a sorting algorithm ) 
He estado jugando y leyendo algunos algoritmos de clasificación, y he decidido intentar escribir mi propia. Resultó ser bastante rápido (en comparación con lo...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos