这是用Java创建文件模型的好代码吗?

时间:2016-10-21 12:49:33

标签: java jekyll blogs

我有一个由Github Pages托管并由Jekyll提供支持的博客。 要使用Jekyll创建新帖子,您需要在文件的标题中添加一些信息,至少包含以下详细信息:

---
layout: [layout]
title: [title]
date: [date]
---

文件名必须包含日期。例如:

2016-10-21-name-of-the-post.md

我用Java创建了一个程序,用GUI自动格式化文件。所以我只需要写内容。我不得不知道它是否是一个好的代码。要避免的事情在哪里?请注意,我是一名新程序员。

这是代码:

import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Scanner;
import java.io.PrintWriter;
import java.io.IOException;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Post extends JFrame implements ActionListener{

    // GUI THINGS
    JPanel pl = new JPanel();
    JTextField tfLayout = new JTextField("layout: default", 20);
    JTextField tfTitle = new JTextField("title:", 20);
    JTextField tffl = new JTextField("filename", 20);
    JTextArea tfDes = new JTextArea("Text",10,20);
    JButton b1 = new JButton("Post immediately");

    String filename = "/path/to/the/_posts/folder";
    PrintWriter pw = null;
    Scanner sc = new Scanner(System.in);
    DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    String layout = "";
    String title = "";
    String description = "";
    Date date = new Date();
    String actualdate = df.format(date);
    JTextField tfDate = new JTextField("date: " + actualdate);
    String format;

    public Post(){
        super("Nouveau post");
        filename += new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + "-";
        setContentPane(pl);
        setLayout(new GridLayout(5,1));
        tfDes.setLineWrap(true);
        tfDes.setWrapStyleWord(true);
        pl.add(tffl);
        pl.add(tfLayout);
        pl.add(tfTitle);
        pl.add(tfDate);
        pl.add(tfDes);
        pl.add(b1);

        b1.addActionListener(this);

    }

    public static void main(String[] args){

        Post window = new Post();
        window.pack();
        window.setLocationRelativeTo(null);
        window.setSize(400, 300);
        window.setVisible(true);
    }

    public void actionPerformed(ActionEvent ae) {       
        layout = tfLayout.getText();
        filename += tffl.getText() + ".md";
        title = tfTitle.getText();
        description = tfDes.getText();
        actualdate = tfDate.getText();

        format = "---\n" + layout + "\n" + title + "\n" + actualdate +
            "\n---\n<p>" + description + "</p>";

        try {
            pw = new PrintWriter(filename, "UTF-8");
        } catch(IOException io) {
            System.out.println("ERROR while creating the file");
        }

        pw.print(format);
        pw.close();

        JOptionPane.showMessageDialog(this, "Sucesssfully created a post.");
        this.dispose();  
    }
}

1 个答案:

答案 0 :(得分:1)

这个问题太笼统了。

但我建议将您的代码拆分为Model-View-Presenter。将Post放入自己的类中,将视图的逻辑放入自己的类中,并实现一个处理输入的演示者。如果您对优秀代码有进一步的兴趣,我还建议您阅读一些关于Clean Coding的内容(例如Robert C. Martin)。

另外,为常量制作最终变量。