I am working on a class assignment and one of the things covered in this weeks text is hardcoding and how it is frowned upon.

My question is if I physically put in a value that is part of the formula, is that considered hardcoding?

example: the volume of a sphere is (4/3) * PI * r^3 should I declare (4/3) as variable in the beginning of my block code? or should I take it a step further and declare the whole formula?

I hope what I am asking makes sense to everyone, and for a little extra information here is the my code:

  package area_volume_surfacearea;

/**
 * Area_Volume_SurfaceArea (Assignment number 9)
 * For CSCI 111
 * last modified sept 15 12 p.m.
 * @author Jeffrey Quinn
 */
        //import Scanner class
import java.util.Scanner;

public class Area_Volume_SurfaceArea 
{

    /**
     * This method finds the Area, Volume and Surface Area of geometric shapes 
     based off a value that the user inputs (in inches)
     */


    public static void main(String[] args) 
    {
        double distance; //the distance the users inputs to be used in the formulas (raidus or side)
        double areaCircle; //the area of the circle
        double areaSquare; //the area of the square
        double volumeSphere; //the volume of the sphere
        double volumeCube; //the volume of the cube
        double surfaceAreaSphere; // the surface area of the sphere
        double surfaceAreaCube; //the surface area of the cube

        //declare an instance of Scanner class to read the datastream from the keyboard
        Scanner keyboard = new Scanner(System.in);

        //get the value of the radius of the circle (in inches)
        System.out.println("Please enter a distance (in inches) to be used:");
        distance = keyboard.nextDouble();

        //calculate area of a circle (in inches)
        areaCircle = Math.PI * Math.pow(distance,2);

        //calculate area of a square (in inches)
        areaSquare = Math.pow(distance,2);

        //calculate volume of a sphere (in inches)
        volumeSphere = (4/3) * Math.PI * Math.pow(distance,3);

        //calculate volume of a cube (in inches)
        volumeCube = Math.pow(distance,3);

        // calulate surface area of a sphere (in inches)
        surfaceAreaSphere = 4 * Math.PI * Math.pow(distance,2);

        //calculate surface area of a cube (in inches)
        surfaceAreaCube = 6 * Math.pow(distance,2);

        //results
        System.out.println(" The area of a circle with the radius of " + distance + "in, is " + areaCircle);
        System.out.println(" The area of a square whos sides measures " + distance+ "in, is " + areaSquare);
        System.out.println(" The volume of a sphere with the radius of " + distance + "in, is " + volumeSphere);
        System.out.println(" The volume of a cube whos sides measures " + distance + "in, is " + volumeCube);
        System.out.println(" The surface area of a sphere with the radius of " + distance + "in, is " + surfaceAreaSphere);
        System.out.println(" The surface area of a cube whos sides measures " + distance + "in, is " + surfaceAreaCube); 
    } //end main()

}// end class Area_Volume_SurfaceArea
有帮助吗?

解决方案

These are formulas that will never change. There is absolutely no issues to hard-code such algorithms. Adding unessary variables will just make your code more complex without giving any benefits. However, DRY code is just as important so if you are finding yourself writing this ratio over and over in many places, it could then be a good idea to store it in a variable. For instance, if I had to use the number 666 at many places in my code, even if that number would never ever change, I would say it's better to define it as a constant since it's less error-prone.

final int NUMBER_OF_THE_BEAST = 666;

其他提示

In the spirit of self documenting code you could create a variable:

double SPHERE_VOLUME_RATIO = 4.0d/3.0d;

BTW, applying your studies your code is very easy to read.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top