码迷,mamicode.com
首页 > 其他好文 > 详细

Refactoring #001 Extract Method

时间:2018-01-14 22:38:24      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:ret   xxx   out   throws   一个   lis   try   pre   turn   

Example

    public void startup() {
        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(10000);
            System.out.println("The server is listening on 10000 port ...");
            while (true) {
                serve(serverSocket.accept());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

/

    private ServerSocket createServerSocket(final int port) throws IOException {
        ServerSocket result = new ServerSocket(port);
        return result;
    }

    private void printPrompt(final String prompt) {
        System.out.println(prompt);
    }

    private void startWorking(final ServerSocket serverSocket) throws IOException {
        while (true) {
            Socket socket = serverSocket.accept(); // 关于引用放 while外面还是里面有激烈的争论,我的结论是放里面。
            createServerThread(socket);
        }
    }

    public void startup() {
        try {
            ServerSocket serverSocket = createServerSocket(PORT);
            printPrompt("The server is listening on " + PORT + " port ...");
            startWorking(serverSocket);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 

Note

为什么要 Extract Method?主要体现在“可读性”和“代码复用”上:

  1. 函数的粒度越小被复用的机会越大
  2. 免去写注释,因为代码读起来就像是一系列注释
  3. 如果函数都是细粒度,方便覆写(ps.这条不理解)

Extract Method 的手段:

  1. 直接提取一段代码。(用一个方法代替注释)
  2. 把局部变量作为参数传递给方法。
  3. 把对局部变量的操作转化为一个查询。(类似于 getOutputcreateXxx

Refactoring #001 Extract Method

标签:ret   xxx   out   throws   一个   lis   try   pre   turn   

原文地址:https://www.cnblogs.com/xkxf/p/8275125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!