我有代码并且考虑让它变得更加纯净和干净。
我觉得在方法中摆脱多个回报会很好。
怎么可能被重构? 也许我应该使用一些模式? 请指教。提前谢谢。
class Test{
private client;
private concreteMixer;
constructor(client, concreteMixer){
this.client = client;
this.concreteMixer = concreteMixer;
}
public method(){
let form = new Form();
if(form.isSubmitted()){
if(form.isValid()){
let field = form.getField();
let infoField = this.client.testField(field);
if(!infoField){
form.setError('This is not valid field');
return form;
}
let coffee = this.concreteMixer.makeСoffee();
//two days have passed
if(!coffee){
form.setError('I want coffee');
return form;
}
this.concreteMixer.pourInThermosBottle();
//two days have passed
return coffee;
}
}
return form;
}
}
答案 0 :(得分:0)
我会这样做
/**
* Comment
*/
class Test {
/**
* Comment
*/
protected client;
/**
* Comment
*/
protected concreteMixer;
/**
* Comment
*/
constructor(client, concreteMixer) {
this.client = client;
this.concreteMixer = concreteMixer;
}
/**
* Comment
*/
public method() {
const form = new Form();
// Comment
if (!form.isSubmitted() || !form.isValid()) {
return form;
}
// Comment
const field = form.getField();
// Comment
const infoField = this.client.testField(field);
// Comment
if (!infoField) {
form.setError(ERROR_CODE_01);
return form;
}
// Comment
const coffee = this.concreteMixer.makeСoffee();
//two days have passed
if (!coffee) {
form.setError(ERROR_CODE_02);
return form;
}
// Comment
this.concreteMixer.pourInThermosBottle();
// two days have passed
return coffee;
}
}
我将let
发生的地方替换为const
。当你的变量没有改变使用const时。何时使用let
。
如果您遇到以下情况:
if (something) {
... a lot of lines
}
// end of function
您可以使用:
if (!something) {
return;
}
所以你赢得了很多行的缩进级别。
使用错误代码而不是直接错误字符串。因此,您应用的用户可以通过编程方式对待它。
评论您的代码以解释发生了什么。因此,如果一个编码人员或您的未来自己发现这个代码,它将更容易理解。至少:该课程做什么? method
做什么?
我将private
替换为protected
,所以如果有一天你想从你的班级继承,你可以不经进一步改动就这样做。