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

## Retirement-saving calculator

3

### 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:

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

5

# 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   ``

# 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.

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...

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...