繁体   English   中英

代码重构,如何优雅地覆盖对象值

[英]code refactoring, how to elegantly overwrite object values

所以我打电话给工厂,一切顺利后,我想重置输入字段的值,正如您在下面的代码中看到的那样,我手动执行此操作。

vm.submitRequest = () = > {
    requestedBooksFactory.requestBook(vm.title, vm.author, vm.link, vm.destination, vm.currentUser, vm.comments)
        .then(function (newbook) {
        let booksInTotal = vm.requestedBooks.allBooks.length + 1;

        vm.requestedBooks.allBooks.push(newbook);
        vm.requestedBooks.header = requestedBooksFactory.requestedText(booksInTotal);
    }).then(() = > {
        vm.title = '';
        vm.author = '';
        vm.link = '';
        vm.comments = '';
        vm.destination = false;
        vm.submitted = false;
    })
}

我不喜欢这个样子,但想不出解决方法

我自己重构这段代码的方法:

vm.submitRequest = submitRequest;

/**************/

function submitRequest() {
    return requestBook()
        .then(bookReceived)
        .then(clearController);

}

function requestBook() {
    return requestedBooksFactory.requestBook(vm.title, vm.author, vm.link, vm.destination, vm.currentUser, vm.comments);
}

function bookReceived(book) {
    vm.requestedBooks.allBooks.push(book);
    vm.requestedBooks.header = requestedBooksFactory.requestedText(vm.requestedBooks.allBooks.length);
}

function clearController() {
    vm.title = '';
    vm.author = '';
    vm.link = '';
    vm.comments = '';
    vm.destination = false;
    vm.submitted = false;
}

来源不应该太压缩。 它应该是可读和清晰的。
不要对长方法使用匿名函数。
它们是为短迭代器设计的。
不要害怕函数名称,它们是为您而存在的,而不是为解析器提供的。
对于解析器,您将使用混淆器。


但我试着发布你在找什么:)

   function clearController() {
     ['title', 'author', 'link', 'comments'].forEach(f => {vm[f] = '';});
     ['destination', 'submitted'].forEach(f => {vm[f] = false;});
   }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM