2016-10-21 70 views
0

我有一個由Github Pages託管的博客,由Jekyll提供支持。 要創建一個新的職位與哲基爾你需要把一些信息的文件的文件頭至少具有以下細節:這是一個用Java創建文件模型的好代碼嗎?

--- 
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(); 
    } 
} 
+5

我投票結束這個問題作爲題外話,因爲它屬於[代碼評論](http://codereview.stackexchange.com/)堆棧交換。 –

+1

CK:請注意,這並不意味着你的問題是不好的,只是你會在Code Review找到更好的答案。祝你好運! –

回答

0

這個問題太籠統。

但我建議把你的代碼分解成Model-View-Presenter。將帖子放到它自己的類中,將視圖的邏輯放入它自己的類中,並實現一個處理輸入的演示者。如果您對良好的代碼有進一步的興趣,我還推薦閱讀一些關於Clean Coding的內容(例如Robert C. Martin)。

另外,爲你的常量做最後的變量。

+0

如果你發現自己回答「這個問題太籠統了」,這是一個很好的指標,你不應該回答。 –

相關問題