javascript - 设计模式:是否应将对不同模块的重复功能调用移至其自身的“抽象”位置?

原文 标签 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.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应用程序中顶级文件中的一些代码。如您所见,加载应用程序时,它将在初始化时调用各种函数。

假设,我可能有一天会在应用程序的不同部分(有一些自动重新登录)重复这段代码。将此类代码放在自己的类中是“惯例”吗?我的意思是,这样做将完全违反单一职责原则,因为该类/模块将与许多其他类和职责高度结合。

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

最佳答案

首字母缩写词DRY-不要重复自己-就是这样。提取代码完全符合单一职责原则,因为新类仅负责一件事,即登录过程,并且只有一个更改的理由,即登录过程是否更改。使用登录组件的所有其他对象将不会在乎(如果API不变)您想要的。如果必须更改组件的API,则耦合会产生问题,因此请始终尝试创建清晰且稳定的API。

关于javascript - 设计模式:是否应将对不同模块的重复功能调用移至其自身的“抽象”位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58344915/

相关文章:

java - 在JSP中使用sqls-最佳做法是什么?

java - 类的全局领域

javascript - 当您从JavaScript Promises中省略.catch时,实际上发生了什么?

javascript - jQuery ajax不返回错误或成功或始终返回

javascript - 一个网页完成两个功能时如何测量?

javascript - 在React中显示更新状态

reactjs - 在 react 应用程序中接收 "Attempted import error:"

java - 用于创建图形复杂的Java Swing应用程序的最佳编程过程?

javascript - 针对Web和移动设备的自适应视频介绍全屏

javascript - `isomorphic-fetch` response.json() 方法总是抛出意外的输入错误结束