首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >演出预约系统

问演出预约系统
EN

Code Review用户
提问于 2016-04-14 11:40:13
回答 1查看 1.3K关注 0票数 2

请接受我的道歉,因为无论我做什么,Java都是我的大脑无法消化的东西。目前,我有一个赋值,并编写了一段代码,并使用了构造函数(我认为如此),但不确定我是否正确地使用了它,如果是,那么需要一些指导才能重构代码。

无论如何,我正在为预订系统编写代码,用户可以选择输入值并创建一个新的显示和日期。我已经在下面的代码中实现了这一点,但是请注意,我是否正确地使用了构造函数。

代码语言:javascript
复制
import java.io.*;
import java.util.*;

public class LocalPlay extends Play {

    private static String playName;
    private static String playDate;

    private LocalPlay(String playName, String playDate) {
        this.playName = playName;
        this.playDate = playDate;
    }

    public String getShowName() {
        return playName;
    }

    public String getShowDate() {
        return playDate;
    }

    public void setShowName(String value) {
        this.playName = value;
    }

    public void setShowDate(String date) {
        this.playDate = date;
    }

    public static void lPlayDetails() {
        try {
            int selection = 0;
            Scanner option = new Scanner(System.in);
            System.out.println();
            System.out.println("Press 1 to Add a New Play/ Show: ");
            System.out.println("Press 2 to View existing Play: ");
            System.out.println("Press 3 to delete existing Play: ");
            System.out.println("Press 4 for Previous Menu: ");
            System.out.println();
            System.out.print("Kindly make the selection: ");
            selection = option.nextInt();
            if (selection == 1) {
                addPlay();
            } else if (selection == 2) {
                viewPlay();
            } else if (selection == 3) {
                deletePlay();
            } else if (selection == 4) {
                managePlay();
            } else
                while (selection != 1 || selection != 2 || selection != 3) {
                    System.out.println();
                    System.out.println(selection + " is not a valid option. ");
                    managePlay();

                }
        } catch (InputMismatchException ime) {
            System.out.println("Invalid option selected.");
            System.out.println("Try again");
            lPlayDetails();
        }
    }

    private static void addPlay() {
        String name;
        String date;
        Scanner option = new Scanner(System.in);
        System.out.print("Enter name of Play: ");
        name = option.nextLine();
        System.out.print("Enter date of Play: ");
        date = option.nextLine();
        LocalPlay lp = new LocalPlay(name, date);
        System.out.println("The name of play is " + playDate + " date played is " + playDate);
        lPlayDetails();
        BufferedWriter writer = null;
        try {
            writer = new BufferedWriter(new FileWriter("play.txt"));
            writer.write(name + " " + date);

        } catch (IOException e) {
        } finally {
            try {
                if (writer != null)
                    writer.close();
            } catch (IOException e) {
            }
        }
        return;
    }

    private static void deletePlay() {
        System.out.println("Method not implemented");
        lPlayDetails();

    }

    private static void viewPlay() {
        System.out.println("Method not implemented");
        lPlayDetails();

    }

}
EN

回答 1

Code Review用户

回答已采纳

发布于 2016-04-14 12:26:47

结构

一般来说,一种方法应该做一件事。例如,addPlay应该添加一个play (虽然对于play类来说它是一个奇怪的方法,因为一个剧本通常不能拥有另一个剧本)。但是您的方法不只是添加一些内容,它实际上检索用户输入、打印内容、将内容写入文件,然后调用一个看似无关的方法,该方法要求更多的用户输入并以某种方式处理。

还非常不清楚您的LocalPlay类实际上应该做什么。查看字段、构造函数和getter/setter,它看起来好像保存了一次播放的数据,但也可以添加一个剧本,这是没有意义的。

您绝对应该尝试将数据的保存与用户输入的解析分离开来。

您还应该尝试更好地定义lPlayDetails和addPlay的任务和区别,并且应该尝试删除令人困惑的调用结构(函数相互调用,这使得很难跟踪程序的控制流)。

Misc

  • 没有理由将字段(或方法)设置为静态。
  • 你的名字有点让人困惑。在play和show之间似乎没有什么区别,您似乎是在交替使用这两种方法。在这种情况下,只使用其中一个术语的清晰度。
  • 如果一个方法没有实现,它就不应该做任何事情。与其做完全不同的事情,不如抛出一些类似于UnsupportedOperationException的东西。
  • lPlayDetails:目前还不清楚这种方法是干什么的。这个名字含糊不清,缺少一个JavaDoc注释。也不清楚与addPlay的确切区别是什么。
  • 我非常不清楚为什么您在LocalPlay中创建了一个新的addPlay。它似乎没有任何理由,而且似乎没有被使用过。
票数 3
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/125669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档