zoukankan      html  css  js  c++  java
  • 静态方法(Static)到底该不该用?

    最近在review同事代码的时候发现一个问题,很多类里边穿插了一些静态方法,而且情况很普遍,调用的时候有的需要实例化,有些不需要实例化直接调用。我问他为什么要用那么多静态方法,他说“使用方便,不需要实例化,而且这些静态方法不需要保存状态,不需要调用外界变量,应该是线程安全的”。后来我们一起研究讨论了一下静态方法的使用问题,结论如下:


    1. 静态方法不需要实例化,使用方便

    2. 静态方法不存在常驻内存,效率高等幻觉,可以看看这篇文章

    3. 一个类里面不要穿插静态方法和非静态方法,因为违反OO和设计原则

    4. 大量使用静态方法有违OO原则

    5. 使用静态方法的情况:适合用在helper类型的辅助类、基础类,这个类本身就定义成static class,看一段微软的示范代码:

       internal static class Guard
        {
            
    public static void TypeIsAssignableFromType(Type assignee, Type providedType, Type classBeingBuilt)
            {
                
    if (!assignee.IsAssignableFrom(providedType))
                    
    throw new IncompatibleTypesException(string.Format(CultureInfo.CurrentCulture,
                        Properties.Resources.TypeNotCompatible, assignee, providedType, classBeingBuilt));
            }

            
    public static void ValidateMethodParameters(MethodBase methodInfo, object[] parameters, Type typeBeingBuilt)
            {
                ParameterInfo[] paramInfos 
    = methodInfo.GetParameters();

                
    for (int i = 0; i < paramInfos.Length; i++)
                    
    if( parameters[i] != null )
                        Guard.TypeIsAssignableFromType(paramInfos[i].ParameterType, parameters[i].GetType(), typeBeingBuilt);
            }
        }


  • 相关阅读:
    flex 均分铺满
    git commit -a -m "M 1、引入mixin,公共样式mixin传参处理;";git push origin master:master
    mixin 在传参中可以出现 参数 在类内部可以定义 作用域
    p:nth-last-child(2)
    display block 是否提倡
    对宽度的控制原则 git commit -a -m "M 1、完成less计算得出图片的均分布局;";git push origin master:master
    体验评分 小程序 优化
    tmp
    after
    通过less 计算 得出图片均分布局
  • 原文地址:https://www.cnblogs.com/Mainz/p/1893151.html
Copyright © 2011-2022 走看看