代码之家  ›  专栏  ›  技术社区  ›  mightycode Newton

复杂性是x是时候做点什么了。。。,visual studio代码

  •  0
  • mightycode Newton  · 技术社区  · 2 年前

    我正在将vscode用于react原生应用程序。我想知道信息是否:

    复杂性是x是时候做点什么了。。。

    总是有用的。

    因为例如我有这样的功能:

    import { API_URL } from "@env";
    import { retrieveToken } from "../authentication/token";
    export const fetchCategoryData = async () => {
        const token = await retrieveToken();
        try {
            if (token) {
                const response = await fetch(`${API_URL}/api/categories/main_groups/`, {
                    method: "GET",
                    headers: {
                        Authorization: `Token ${token}`,
                        "Content-Type": "application/json",
                    },
                });
                return await response.json();
            } else {
                throw new Error(token);
            }
        } catch (error) {
            Error("can't retreive data");
        }
    }
    

    vscode说:

    复杂性是6是时候做点什么了。。。

    retrieveToken:

    import AsyncStorage from "@react-native-async-storage/async-storage";
    
    export const retrieveToken = async () => {
        try {
            const token = await AsyncStorage.getItem("Token");
    
            return token;
        } catch (error) {
            return null;
        }
    };
    

    问题:如何改进信息中所说的功能:复杂性是6是时候做点什么了。。。?

    1 回复  |  直到 2 年前
        1
  •  1
  •   Bergi    2 年前

    最大的问题是:有可能重构它吗?

    Don't use try / catch everywhere 。只在你能实际使用的地方使用 手柄 错误。在您的示例中,这似乎不存在——任何错误都需要由的调用方处理 fetchCategoryData .

    因此,您可以将整个过程简化为

    export const retrieveToken = async () => {
        const token = await AsyncStorage.getItem("Token");
        if (!token) throw new Error('Got empty token from storage');
        return token;
    }
    
    export const fetchCategoryData = async () => {
        const token = await retrieveToken();
        const response = await fetch(`${API_URL}/api/categories/main_groups/`, {
            method: "GET",
            headers: {
                Authorization: `Token ${token}`,
                "Content-Type": "application/json",
            },
        });
        return await response.json();
    }
    

    其圈复杂度分别为2和1。

    推荐文章