Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设计模式:对不同模块的重复函数调用是否应该转移到它们自己的“抽象”中?_Javascript_Reactjs_Design Patterns_Abstraction_Single Responsibility Principle - Fatal编程技术网

Javascript 设计模式:对不同模块的重复函数调用是否应该转移到它们自己的“抽象”中?

Javascript 设计模式:对不同模块的重复函数调用是否应该转移到它们自己的“抽象”中?,javascript,reactjs,design-patterns,abstraction,single-responsibility-principle,Javascript,Reactjs,Design Patterns,Abstraction,Single Responsibility Principle,作为一名JS开发人员,我经常发现自己在这个问题上苦苦挣扎,是否应该将某些过程移动到自己的层。例如: const localStorageUser = jwtService.userExistsInStorage();//Returns a user object if available if (localStorageUser) {//If so, "login" from it // debugger; store.dispatch(userActions.setUserDa

作为一名JS开发人员,我经常发现自己在这个问题上苦苦挣扎,是否应该将某些过程移动到自己的层。例如:

const localStorageUser = jwtService.userExistsInStorage();//Returns a user object if available
if (localStorageUser) {//If so, "login" from it
    // debugger;
    store.dispatch(userActions.setUserData(localStorageUser))//Set the user object in the Redux store.
    AjaxService.setHeader('token', localStorageUser.data.token);//Set the token header for every ajax request.

    if (localStorageUser.data.shortcuts) {
        store.dispatch(navigationActions.setNavigation(localStorageUser.data.shortcuts));
    } else {
        store.dispatch(navigationActions.resetNavigation());
    }
}
这是React应用程序中顶级文件中的一些代码。如您所见,当应用程序加载时,它会在初始化时调用各种函数

比方说,有一天我可能会发现自己在appsome的另一个部分重复这段代码,并自动重新登录。将这样的代码放在自己的类中是一种习惯吗?我的意思是,这样做完全违反了单一责任原则,因为这个类/模块将与许多其他类和责任高度耦合


这只是一个例子,也许不是最好的一个,但这种困境经常出现。有经验的开发人员如何处理这个问题

首字母缩略词DRY-不要重复你自己-就这么说吧。提取代码完全符合单一责任原则,因为新类只负责一件事,即登录过程,并且只有一个原因需要更改,即登录过程是否更改。使用登录组件的所有其他对象都不会关心API是否没有更改,这正是您想要的。如果您必须更改组件的API,那么耦合会产生问题,因此请始终尝试创建清晰和稳定的API