重构代码--Extract Method

代码重构——第一个实例 0 引言随着“互联网+”的普及,互联网行业得到了快速蓬勃发展,使得现实生活中人们对互联网产品的需求逐渐增加,促使互联网产品功能越来越复杂,项目逐渐失去有效的管理。为满足项目功能上的需求,提高项目的扩展性和可维护性,必须在保证业务功能不变的情况下进行代码重构的开发行为。重构意味着要改变代码,或者说是重新修改,或者重写代码。它并不是简单的重复工作,这样的重复工作也是没有多大意义的。他的意义就在于,在日... 阅读详情

重构太经典了!
重构里面比较简单的又算是Extract Method,这是我的代码里的一个类,经过我Extract Method后,我自己是越看越喜欢:P
本来createControl方法看起来很晕得,重构够变得非常简单了,几乎不需要注释,每个方法名就是注释.
当然有时候Extract Method是很麻烦的,比如碰到很多其它外部变量时.
对于这个简单的例子,我的心得就是取个好的方法名!

/**
 * 
@author Rey
 
*/

public class AutoSqlDataSetPage extends WizardPage {

    
public static final String ID = "AutoSqlDataSetPage";

    
private static final int OK = 0;

    
private static final int CANCEL = -1;

    
private List tableList = null;

    
private DataTable initDataTable = null, resultDataTable = null;

    
private TableViewer initTableViewer = null, resultTableViewer = null;

    
private String[] names = new String[] { "" };

    
public AutoSqlDataSetPage() {
        
super(ID);
    }


    
private int index = 1;// input

    
private int click = -1;

    
private Image image = null;

    
private int WIDTH = 40, HEIGHT = 40;

    
private Canvas canvas = null;

    
private ColumnMoveCommand columnMoveCommand = null;

    
public void createControl(final Composite parent) {

        setTitle(
"AutoSqlDataSet Wizard");
        setMessage(
"XXXXXXXXXXXXXXXX", IMessageProvider.INFORMATION);

        Composite composite 
= new Composite(parent, SWT.NULL);
        GridLayout glayout 
= new GridLayout(9, true);
        composite.setLayout(glayout);

        Composite mainBtnsComposite 
= createMainBtnsComposite(composite);

        Button mainBtnAdd 
= createMainBtn(mainBtnsComposite, "Add");
        Button mainBtnRemove 
= createMainBtn(mainBtnsComposite, "Remove");
        Button mainBtnProperties 
= createMainBtn(mainBtnsComposite, "Properties");
        Button mainBtnPreview 
= createMainBtn(mainBtnsComposite, "Preview");

        createSeparator(composite);

        createImage(composite);
        createCanvas(composite);

        addListener2Canvas(parent);

        Table initTable 
= createTable(composite);
        initTableViewer 
= new TableViewer(initTable);
        initTableViewer.setContentProvider(
new ColumnContentProvider());
        initTableViewer.setLabelProvider(
new ColumnLabelProvider());

        Composite tableBtnsComposite 
= createTableBtnsComposite(composite);

        
final Button add = createTableBtn(tableBtnsComposite, ">>");
        
final Button remove = createTableBtn(tableBtnsComposite, "<<");
        
final Button addAll = createTableBtn(tableBtnsComposite, ">>>");
        
final Button removeAll = createTableBtn(tableBtnsComposite, "<<<");
        
final Button undo = createUndoAndRedoBtn(tableBtnsComposite, "undo");
        
final Button redo = createUndoAndRedoBtn(tableBtnsComposite, "redo");

        Table resultTable 
= createTable(composite);
        resultTableViewer 
= new TableViewer(resultTable);
        resultTableViewer.setContentProvider(
new ColumnContentProvider());
        resultTableViewer.setLabelProvider(
new ColumnLabelProvider());

        
/***********************************************************************
         * Main Btns' SelectionListener
         *********************************************************************
*/


        addListener2MainBtnAdd(parent, mainBtnAdd);

        
/***********************************************************************
         * Table and Column Btns' SelectionListener
         *********************************************************************
*/


        addListener2AddBtn(add, undo, redo);

        addListener2RemoveBtn(remove, undo, redo);

        addListener2UndoBtn(undo);

        addListener2RedoBtn(redo);

        addListener2AddAllBtn(addAll, undo, redo);

        addListener2RemoveAllBtn(removeAll, undo, redo);

        setControl(composite);
        setPageComplete(
true);
    }


    
private Composite createMainBtnsComposite(Composite composite) {
        GridLayout glayout;
        Composite mainBtnsComposite 
= new Composite(composite, SWT.NULL);
        GridData gd 
= new GridData(GridData.FILL_HORIZONTAL);
        gd.horizontalSpan 
= 9;
        mainBtnsComposite.setLayoutData(gd);
        glayout 
= new GridLayout(9, true);
        mainBtnsComposite.setLayout(glayout);
        
return mainBtnsComposite;
    }


    
private Button createMainBtn(Composite mainBtnsComposite, String text) {
        GridData gd;
        Button mainBtnAdd 
= new Button(mainBtnsComposite, SWT.PUSH);
        mainBtnAdd.setText(text);
        gd 
= new GridData(GridData.FILL_HORIZONTAL);
        mainBtnAdd.setLayoutData(gd);
        
return mainBtnAdd;
    }


    
private void createSeparator(Composite composite) {
        GridData gd;
        Label label 
= new Label(composite, SWT.SEPARATOR | SWT.HORIZONTAL);
        gd 
= new GridData(GridData.HORIZONTAL_ALIGN_FILL);
        gd.horizontalSpan 
= 9;
        label.setLayoutData(gd);
    }


    
private void createCanvas(Composite composite) {
        GridData gd;
        canvas 
= new Canvas(composite, SWT.NO_REDRAW_RESIZE | SWT.V_SCROLL
                
| SWT.H_SCROLL);
        gd 
= new GridData(GridData.FILL_BOTH);
        gd.horizontalSpan 
= 9;
        canvas.setLayoutData(gd);
    }


    
private void addListener2Canvas(final Composite parent) {
        
final Point origin = new Point(0, 0);

        
final ScrollBar hBar = canvas.getHorizontalBar();
        hBar.addListener(SWT.Selection, 
new Listener() {
            
public void handleEvent(Event e) {
                
int hSelection = hBar.getSelection();
                
int destX = -hSelection - origin.x;
                Rectangle rect 
= image.getBounds();
                canvas.scroll(destX, 
0, 0, 0, rect.width, rect.height, false);
                origin.x 
= -hSelection;
            }

        }
);
        
final ScrollBar vBar = canvas.getVerticalBar();
        vBar.addListener(SWT.Selection, 
new Listener() {
            
public void handleEvent(Event e) {
                
int vSelection = vBar.getSelection();
                
int destY = -vSelection - origin.y;
                Rectangle rect 
= image.getBounds();
                canvas.scroll(
0, destY, 0, 0, rect.width, rect.height, false);
                origin.y 
= -vSelection;
            }

        }
);
        canvas.addListener(SWT.Resize, 
new Listener() {
            
public void handleEvent(Event e) {
                Rectangle rect 
= image.getBounds();
                Rectangle client 
= canvas.getClientArea();
                hBar.setMaximum(rect.width);
                vBar.setMaximum(rect.height);
                hBar.setThumb(Math.min(rect.width, client.width));
                vBar.setThumb(Math.min(rect.height, client.height));
                
int hPage = rect.width - client.width;
                
int vPage = rect.height - client.height;
                
int hSelection = hBar.getSelection();
                
int vSelection = vBar.getSelection();
                
if (hSelection >= hPage) {
                    
if (hPage <= 0)
                        hSelection 
= 0;
                    origin.x 
= -hSelection;
                }

                
if (vSelection >= vPage) {
                    
if (vPage <= 0)
                        vSelection 
= 0;
                    origin.y 
= -vSelection;
                }

                canvas.redraw();
            }

        }
);
        canvas.addListener(SWT.Paint, 
new Listener() {
            
public void handleEvent(Event e) {
                GC gc 
= e.gc;
                gc.drawImage(image, origin.x, origin.y);
                Rectangle rect 
= image.getBounds();
                Rectangle client 
= canvas.getClientArea();
                
int marginWidth = client.width - rect.width;
                
if (marginWidth > 0) {
                    gc.fillRectangle(rect.width, 
0, marginWidth, client.height);
                }

                
int marginHeight = client.height - rect.height;
                
if (marginHeight > 0) {
                    gc
                            .fillRectangle(
0, rect.height, client.width,
                                    marginHeight);
                }

            }

        }
);

        canvas.addMouseListener(
new MouseListener() {

            
public void mouseDown(MouseEvent e) {
                
int x = e.x, y = e.y;
                
int min = HEIGHT, max = HEIGHT + HEIGHT;
                
if (WIDTH < x && x < WIDTH + WIDTH) {
                    
for (int i = 0; i < index; i++) {
                        
if (min < y && y < max) {

                            click 
= i;

                            createImage(parent);
                            canvas.redraw();
                            
break;
                        }

                        min 
= max + HEIGHT;
                        max 
= min + HEIGHT;
                    }

                }

            }


            
public void mouseDoubleClick(MouseEvent e) {
            }


            
public void mouseUp(MouseEvent e) {
            }

        }
);
    }


    
private void createImage(final Composite parent) {
        
int CANVAS_WIDTH = 3 * WIDTH, CANVAS_HEIGHT = (2 * index + 1) * HEIGHT;
        image 
= new Image(parent.getDisplay(), CANVAS_WIDTH, CANVAS_HEIGHT);
        GC gc 
= new GC(image);

        drawTable(parent, gc, names);

        drawLine(gc);

        gc.dispose();
    }


    
private void drawLine(GC gc) {
        
for (int i = 0, x = (int) (WIDTH + 0.5 * WIDTH), y = 2 * HEIGHT; i < index - 1; i++) {
            gc.drawLine(x, y, x, y 
+ HEIGHT);
            y 
= y + HEIGHT;
            y 
+= HEIGHT;
        }

    }


    
private void drawTable(final Composite parent, GC gc, String[] name) {
        
for (int i = 0, x = WIDTH, y = HEIGHT; i < index; i++) {
            
if (i > 0)
                y 
+= 2 * HEIGHT;

            
if (i == click) {
                gc.drawRectangle(x, y, WIDTH, HEIGHT);
                gc.setBackground(parent.getShell().getDisplay().getSystemColor(
                        SWT.COLOR_CYAN));
                gc.fillRectangle(x 
+ 1, y + 1, WIDTH - 1, HEIGHT - 1);
                gc.drawText(name[i], x 
+ 5, y + 5);
            }
 else {
                gc.setBackground(parent.getShell().getDisplay().getSystemColor(
                        SWT.COLOR_WHITE));
                gc.drawRectangle(x, y, WIDTH, HEIGHT);
                gc.drawText(name[i], x 
+ 5, y + 5);
            }

        }

    }


    
private Table createTable(Composite composite) {
        Table table 
= new Table(composite, SWT.MULTI | SWT.FULL_SELECTION
                
| SWT.BORDER);
        GridData gd;
        TableColumn tc 
= new TableColumn(table, SWT.LEFT);
        tc.setWidth(
100);
        tc.setText(
"name");
        tc 
= new TableColumn(table, SWT.LEFT);
        tc.setWidth(
100);
        tc.setText(
"type");
        table.setHeaderVisible(
true);
        table.setLinesVisible(
true);

        gd 
= new GridData();
        gd.horizontalAlignment 
= GridData.FILL;
        gd.verticalAlignment 
= GridData.FILL;
        gd.grabExcessHorizontalSpace 
= true;
        gd.horizontalSpan 
= 4;
        table.setLayoutData(gd);
        
return table;
    }


    
private Composite createTableBtnsComposite(Composite composite) {
        GridLayout glayout;
        GridData gd;
        Composite tableBtnsComposite 
= new Composite(composite, SWT.NULL);
        gd 
= new GridData(GridData.FILL_VERTICAL);
        gd.horizontalAlignment 
= GridData.FILL;
        gd.horizontalSpan 
= 1;
        tableBtnsComposite.setLayoutData(gd);
        glayout 
= new GridLayout(1, true);
        tableBtnsComposite.setLayout(glayout);
        
return tableBtnsComposite;
    }


    
private Button createTableBtn(Composite tableBtnsComposite, String text) {
        GridData gd;
        Button btn 
= new Button(tableBtnsComposite, SWT.PUSH);
        btn.setText(text);
        gd 
= new GridData(GridData.FILL_HORIZONTAL);
        btn.setLayoutData(gd);
        
return btn;
    }


    
private Button createUndoAndRedoBtn(Composite tableBtnsComposite,
            String text) 
{
        GridData gd;
        
final Button btn = new Button(tableBtnsComposite, SWT.PUSH);
        btn.setText(text);
        btn.setEnabled(
false);
        gd 
= new GridData(GridData.FILL_HORIZONTAL);
        btn.setLayoutData(gd);
        
return btn;
    }


    
private void addListener2MainBtnAdd(final Composite parent,
            Button mainBtnAdd) 
{
        mainBtnAdd.addSelectionListener(
new SelectionAdapter() {
            @Override
            
public void widgetSelected(SelectionEvent e) {
                
// TODO
                SelectJoinTableDialog sjtd = new SelectJoinTableDialog(parent
                        .getShell());
                sjtd.setInput(tableList);
                sjtd.open();
                
int returnCode = sjtd.getReturnCode();
                
if (returnCode == OK) {
                    Object[] result 
= sjtd.getResult();
                    DataTable dt 
= (DataTable) result[0];
                    index
++;

                    createImage(parent);
                    canvas.redraw();
                }

            }

        }
);
    }


    
private void addListener2AddBtn(Button add, final Button undo,
            
final Button redo) {
        add.addSelectionListener(
new SelectionAdapter() {
            @Override
            
public void widgetSelected(SelectionEvent e) {
                StructuredSelection selection 
= (StructuredSelection) initTableViewer
                        .getSelection();
                columnMoveCommand 
= new ColumnMoveCommand(initDataTable,
                        resultDataTable, selection);
                columnMoveCommand.execute();
                undo.setEnabled(
true);
                redo.setEnabled(
true);

            }

        }
);
    }


    
private void addListener2RemoveBtn(Button remove, final Button undo,
            
final Button redo) {
        remove.addSelectionListener(
new SelectionAdapter() {
            @Override
            
public void widgetSelected(SelectionEvent e) {
                StructuredSelection selection 
= (StructuredSelection) resultTableViewer
                        .getSelection();
                columnMoveCommand 
= new ColumnMoveCommand(resultDataTable,
                        initDataTable, selection);
                columnMoveCommand.execute();
                undo.setEnabled(
true);
                redo.setEnabled(
true);
            }

        }
);
    }


    
private void addListener2UndoBtn(final Button undo) {
        undo.addSelectionListener(
new SelectionAdapter() {
            @Override
            
public void widgetSelected(SelectionEvent e) {
                columnMoveCommand.undo();
            }

        }
);
    }


    
private void addListener2RedoBtn(final Button redo) {
        redo.addSelectionListener(
new SelectionAdapter() {
            @Override
            
public void widgetSelected(SelectionEvent e) {
                columnMoveCommand.redo();
            }

        }
);
    }


    
private void addListener2AddAllBtn(Button addAll, final Button undo,
            
final Button redo) {
        addAll.addSelectionListener(
new SelectionAdapter() {
            @Override
            
public void widgetSelected(SelectionEvent e) {
                columnMoveCommand 
= new ColumnMoveCommand(initDataTable,
                        resultDataTable);
                columnMoveCommand.execute();
                undo.setEnabled(
true);
                redo.setEnabled(
true);

            }

        }
);
    }


    
private void addListener2RemoveAllBtn(Button removeAll, final Button undo,
            
final Button redo) {
        removeAll.addSelectionListener(
new SelectionAdapter() {
            @Override
            
public void widgetSelected(SelectionEvent e) {
                columnMoveCommand 
= new ColumnMoveCommand(resultDataTable,
                        initDataTable);
                columnMoveCommand.execute();
                undo.setEnabled(
true);
                redo.setEnabled(
true);

            }

        }
);
    }


    
public void onEnterPage() {
        AutoDataSetWizardController controller 
= ((AutoDataSetWizard) getWizard())
                .getController();
        tableList 
= controller.getTableList();
        initDataTable 
= controller.getSelectedTable();
        initTableViewer.setInput(initDataTable);

        resultDataTable 
= DoradoFactory.eINSTANCE.createDataTable();
        resultTableViewer.setInput(resultDataTable);

        setNames();

        redrawImage();
    }


    
private void setNames() {
        names 
= new String[tableList.size()];
        
int i = 0;
        
for (Iterator it = tableList.iterator(); it.hasNext(); i++) {
            DataTable table 
= (DataTable) it.next();
            names[i] 
= table.getName();
        }

    }


    
private void redrawImage() {
        Composite parent 
= canvas.getParent();
        createImage(parent);
        canvas.redraw();
    }


    
private class ColumnContentProvider implements IStructuredContentProvider {
        
public Object[] getElements(Object inputElement) {
            DataTable table 
= (DataTable) inputElement;
            
return table.getColumns().toArray();
        }


        
public void dispose() {
        }


        
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

    }


    
private class ColumnLabelProvider implements ITableLabelProvider {
        
public Image getColumnImage(Object element, int columnIndex) {
            
return null;
        }


        
public String getColumnText(Object element, int columnIndex) {
            Column column 
= (Column) element;
            String text 
= "";

            
switch (columnIndex) {
            
case 0:
                text 
= column.getName();
                
break;
            
case 1:
                text 
= column.getType();
                
break;
            }

            
return text;
        }


        
public void addListener(ILabelProviderListener listener) {
        }


        
public void dispose() {
        }


        
public boolean isLabelProperty(Object element, String property) {
            
return false;
        }


        
public void removeListener(ILabelProviderListener listener) {
        }

    }


    
private class ColumnMoveCommand {
        DataTable src, dest;

        List columns;

        StructuredSelection selection;

        
public ColumnMoveCommand(DataTable src, DataTable dest) {
            
this.src = src;
            
this.dest = dest;
            columns 
= new ArrayList();
            
for (Iterator it = src.getColumns().iterator(); it.hasNext();) {
                Column column 
= (Column) it.next();
                columns.add(column);
            }


        }


        
public ColumnMoveCommand(DataTable src, DataTable dest,
                StructuredSelection selection) 
{
            
this.src = src;
            
this.dest = dest;
            
this.selection = selection;
            columns 
= new ArrayList();
            
for (Iterator it = selection.iterator(); it.hasNext();) {
                Column column 
= (Column) it.next();
                columns.add(column);
            }

        }


        
public void execute() {
            
for (Iterator it = columns.iterator(); it.hasNext();) {
                Column c 
= (Column) it.next();
                src.getColumns().remove(c);
                dest.getColumns().add(c);
            }

            refreshTable();
        }


        
public void undo() {
            
for (Iterator it = columns.iterator(); it.hasNext();) {
                Column c 
= (Column) it.next();
                src.getColumns().add(c);
                dest.getColumns().remove(c);
            }

            refreshTable();
        }


        
public void redo() {
            execute();
        }


        
private void refreshTable() {
            initTableViewer.refresh();
            resultTableViewer.refresh();
        }

    }


}
实战解析:如何通过LTspice仿真优化MOS管缓启动电路,解决上电冲击电流问题 本文详细解析如何通过LTspice仿真优化MOS管缓启动电路,有效解决上电冲击电流问题。文章从问题根源分析入手,介绍LTspice环境搭建、缓启动电路设计原理、参数优化技巧及实际工程问题排查,帮助工程师掌握MOS管电源开关电路的关键设计方法,提升系统可靠性和性能。 阅读详情

相关推荐

特斯拉 Model 3解析(八)全面拆解特斯拉自动驾驶大脑:AP控制器硬核技术解析

算力极限:双FSD = 144 TOPS,专为AI推理优化。存储架构:LPDDR4 + NAND + NOR,保证高速/可靠启动。通信架构:以太网传视频,CAN传控制,TSN保障实时性。感知输入:多路摄像头 + 高速SerDes,满足全景感知。电源设计:功率模块+被动元件海洋,稳定性优先。功能安全:双芯片冗余 + GPS + 紧急呼叫,容错率极高。🎯 在我看来,特斯拉AP控制器就是一台“车载超算”,它在电源设计、存储架构和功能安全上远超一般新势力方案。

weixin_43199439的博客 1441

重构函数-Extract Method提炼函数一

上面介绍了提炼函数的步骤,还配了提炼的示例代码。从这些代码提炼过程中能够感受到代码每一步改变都是思想的升华,每一次改变都是对编程思想有了新的发现和认识。每一步变化都体现了对细节的追求,展现了工匠精神。

Bruce小鬼 613

【WILEY】从Revision到Online:一次投稿的完整状态演进与关键节点实战解析

本文详细解析了从Revision到Online发表的完整投稿流程,包括修改稿准备、回复信撰写、状态跟踪等关键节点。特别针对Wiley期刊,提供了实用的操作技巧和常见问题解决方案,帮助作者高效完成论文修改与发表。

weixin_29219189的博客 361

Extract Method

You have a code fragment that can be grouped together. 02 Turn the fragment into a method whose name explains the purpose of the method. 03 void printOwing(double amount) { printBanner();

我爱三井寿 1361

【以太网硬件九】1000base-X是什么?

简要描述1000base-X物理层规范

highman110的博客 1万+

基于ROS2 Humble和VGR数据集完整部署GADEN气体分散仿真环境及模型替换实践

文章摘要 本文详细介绍了基于ROS2 Humble和VGR数据集部署GADEN气体分散仿真环境的方法。GADEN是一款专为移动机器人嗅觉研究设计的3D仿真框架,能够精确模拟气体扩散过程并集成多种环境传感器。文章从系统配置开始,逐步指导读者完成ROS2 Humble环境的搭建、GADEN框架的编译部署,以及VGR数据集的使用。VGR数据集包含120个基于真实房屋模型的CFD仿真案例,为研究提供高度真实的测试环境。教程涵盖了常见问题的解决方案,并深入探讨了气体扩散模型参数的修改方法,为机器人嗅觉算法的开发和验证

huanghm88的专栏 276

Eclipse Extract Method 方法实现 (一)

                Eclipse Extract Method 方法实现 (一)摘要:       为了我的com.jet.anySqlRun插件的Parse Code部分进行了一点技术准备(参看Eclipse 插件开发――我的计划 一文)。分析Eclipse Extract Method的实现,为我所用。在开始之前我假设大家都知道Extract Method

JetGeng的专栏 4513

完整复盘【避雷jd文职某岗位】潍坊青州hhj(据说未来搬到天津),助理实验师岗位,三人进面,面试全部不及格,空头岗位!像这种情况,该单位很多 | 附个人完整备考背诵题目 | 世间一场梦,不会再考这个了

本文以博主本人报考jun dui文职,从报考、备考、考试、查成绩到资格审查、面试,全程亲身经历,给想要报考该内容的朋友们一些小的参考。祝你顺利上岸!完整复盘【避雷jd文职某岗位】潍坊青州hhj(据说未来搬到天津),助理实验师岗位,三人进面,面试全部不及格,空头岗位!像这种情况,该单位很多 | 附个人完整备考背诵题目 | 世间一场梦,不会再考这个了

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 247

黑马程序员_基础加强02

------- android培训、java培训、期待与您交流! --------   1 对javaBean的简单内省操作 注意:选中代码,点右键--reflector(重构)--Extract Method这样会把这些代码自动抽取成为一个方法 /* 例子:用内省获取一个类的变量 */ package cn.itcast; import java.beans.Introspect

黑马程序员_技术日记 673

华为OD机试双机位C卷-字符串解密(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【字符串解密】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 字符串解密。

qq_45776114的博客 733

MATLAB计算各种复合干热指数,如SDHI、DHMI等

MATLAB编程实现各种复合干热指数

WW、forever的博客 5079

从Java的角度理解设计模式3:自动提炼方法

文章摘自http://www.rzchina.net/forum/7下面将简单展示两个重构技巧“提炼方法(Refactoring:Extract Method)”和“搬移方法(Refactoring:Move Method)”如何通过Eclipse自动实施。给出原始代码,如下所示。HelloBean.javapackage ch2.extractandmovemethod.protot

kuailehuiyi的专栏 251

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

土耳其语重构指南:Extract Method技巧实战教程——3步拆分上帝方法,让代码从此可读

> 基于开源项目 **refactoring-guide-in-turkish(土耳其语重构指南,Türkçe refactoring kılavuzu)**——一份完整的土耳其语代码重构指南,本文带你 **实战 Extract Method 重构技巧**,用 3 步拆分冗长的"上帝方法",让代码从此可读、好维护。🧩 这个项目 [README.md](https://link.gitcode.

gitblog_00817的博客 683

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

《重构 改善既有代码的设计》学习笔记 2 -- Extract Method(提炼函数)

重构的手法中,很大一部分是对函数进行整理,使之更恰当地包装代码。 问题来源:      过长函数。      这些过长的函数,往往包含太多信息,这些信息又被函数错综复杂的逻辑掩盖,不易鉴别。  解决方案:      使用Extract Method(提炼函数),把一段代码从原先函数中提取出来,封装成一个单独函数中。 困难:       处理局部变量。 做法:     1. 封装新

开发分享交流 778

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

步步为营 .NET 代码重构学习笔记 二、提炼方法(Extract Method)

动机(Motivation) Extract Method是我们最常用的重构手法之一.当我们看见一个过长的函数或一段需要注释才能让人理解用途的代码,我们就会将这段代码放进一个独立函数中. 有数个原因造成我们喜欢简短而有良好命名的函数.首先,如果每个函数的粒度都很小(finely grained),那么函数之间彼此复用的机会就更大;其次,这会使高层函数代码读起来就像一系列注释;再者,如果函数都是...

weixin_34205076的博客 318

refactoring笔记——代码重构的方法:Extract Method

适用场合: 当一个类里的方法的语句过长时,就要采取从该方法中,再提取另外一个方法出来; tag: 类 方法 语句过多 提取  提取时要注意的地方: 1. 要提取出来的代码,有几个变量, 在这些代码里,哪些变量是没有改变过,哪些变量改变了; 解决方法: 没改变的变量,采用传参的方式

Micky blog 914

重构,改善既有代码的设计(实战篇)

程序员必懂的代码重构(理论篇)一文介绍了代码重构是什么、常用的重构手法和代码中的“坏味道”。But talk is cheap. Show me the code,本文将从实战的角度来谈谈代码重构,共分为:题目、初步解法、重构实战和总结四部分。

云瀚的自习室 4982

提取方法(Extract Method) --代码重构

适用场合: 当一个类里的方法的语句过长时,就要采取从该方法中,再提取另外一个方法出来;   tag: 类 方法 语句过多 提取    提取时要注意的地方:   1. 要提取出来的代码,有几个变量, 在这些代码里,哪些变量是没有改变过,哪些变量改变了;   解决方法: 没改变的变量,采用传参的方式传到新提取的方法里; 改变的变量,采用返回值的形式返回;     2. 举例...

注重长远 天天积累 cqujsjcyj 416

代码重构(一)

代码重构 代码坏味 1.1重复代码(Duplicated Code) 出现的情况: 相同的代码结构重复出现不同地方时,我们可以将它们合而为一。 两个互为新工地的子类内包含相同的表达式 具体采用的方法: 采用Extract Method提炼重复代码 只需对两个类都是用Extract Method,然后再对被提炼出来的代码使用Pull Up Method将它推入超类内 如果两个毫不相关的...

Tony-jiang的博客 1万+

myeclipse快捷操作:一段代码自动生成方法 refactor重构extract method抽取方法

有时候我们写了一大片的代码 看起来比较流水账 怎么把代码抽取自动生成方法. myeclipse中的操作如下: 选取一段代码后右键----refactor-----extract method 在弹出的窗口中填入方法名即可 所需要的参数 会自动统计 很方便:在弹出的窗口中填入方法名即可 所需要的参数 会自动统计 很方便: 在弹出的窗口中填入方法名即可 所需要的参数 会自动统计 很方便: ...

m0_37737148的博客 613

重构-改善既有代码的设计总结

<br />随着项目的进展,我们会发现已经完成的代码结构不再象我们预想的那么清晰合理,这大多是由于需求的变更造成的。此时我们需要改善目前的代码,有两种方法,一种是重写,另一种是重构。重写的好处是明显的,结构必然更合理,但是问题在于浪费时间。重构是一个折中的方法,时间始终,调整后结构也变得更合理。一般情况下,当我们对已有代码修改超过三次时就需要重构。<br />重构的基本原则是步步为营,每次进行一小步,然后测试,周而复始。另一个原则是抵制诱惑,不要改变代码的外在表现,不要试图修正代码中的Bug。下面是具体的重

Matrix_Designer的专栏 716

JAVA-----myeclipse快捷操作:一段代码自动生成方法 refactor重构extract method抽取方法

有时候我们写了一大片的代码 看起来比较流水账  怎么把代码抽取自动生成方法. myeclipse中的操作如下: 选取一段代码后右键----refactor-----extract method 在弹出的窗口中填入方法名即可 所需要的参数  会自动统计 很方便:

直到世界的尽头 1万+
上一篇: Top 10 Eclipse Hotkeys
下一篇: 基于eclipse wst validation的语法验证插件
W1nt3rs
W1nt3rs 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄22年 977粉丝 301原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值