0

我正在做一个课堂作业,这周的课文中涉及的一件事是硬编码以及它是如何被皱眉的。

我的问题是,如果我在物理上输入了一个作为公式一部分的值,这是否被认为是硬编码?

例如:球体的体积是 (4/3) * PI * r^3 我应该在代码块的开头声明 (4/3) 作为变量吗?还是我应该更进一步并宣布整个公式?

我希望我的要求对每个人都有意义,这里有一些额外的信息是我的代码:

  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
4

2 回答 2

0

本着自我记录代码的精神,您可以创建一个变量:

double SPHERE_VOLUME_RATIO = 4.0d/3.0d;

顺便说一句,应用你的研究你的代码很容易阅读。

于 2013-09-15T21:14:32.447 回答
0

这些是永远不会改变的公式。对此类算法进行硬编码绝对没有问题。添加不必要的变量只会使您的代码更复杂而没有任何好处。但是,DRY 代码同样重要,因此如果您发现自己在许多地方一遍又一遍地编写这个比率,那么将它存储在一个变量中可能是一个好主意。例如,如果我必须在代码中的许多地方使用数字666,即使该数字永远不会改变,我会说最好将其定义为常量,因为它不易出错。

final int NUMBER_OF_THE_BEAST = 666;

于 2013-09-15T21:18:44.423 回答