QFrameWork学习(十) 重构小工具 Platform

这一篇是作者的经验之谈了,算是个小技巧吧。

在日常开发中,或许经常遇到或者写出这样的代码:

 

var sTrAngeNamingVariable = "a variable";

#if UNITY_IOS || UNITY_ANDROID || UNITY_EDITOR
        sTrAngeNamingVariable = "a!value";
#else
        sTrAngeNamingVariable = "other value";
#endif

        当我们发现 sTrAngeNamingVariable 的命名很不规范的时候,要对此变量进行重命名。一般的 IDE 都会支持变量/类/方法的重命名。

        借助 IDE 的重命名功能,代码会变成如下:

var strangeVariableName = "a variable";

#if UNITY_IOS || UNITY_ANDROID || UNITY_EDITOR
    strangeVariableName = "a!value";
#else
    sTrAngeNamingVariable = "other value";
#endif

         else 代码块里的变量重命名没有成功。当宏判断散落在各处时,很难发现这种错误。直到打包/AssetBundle/切换平台时,问题才会暴露。

        接下来就写了个platform的工具,使用如下,这样再重命名就不会有问题:

var strangeVariableName = "a variable";

if (Platform.IsiOS || Platform.IsAndroid || Platform.IsEditor)
{
    sTrAngeNamingVariable = "a!value";
}
else
{
    sTrAngeNamingVariable = "other value";
}

public class Platform
    {
        public static bool IsAndroid
        {
            get
            {
                bool retValue = false;
#if UNITY_ANDROID
                retValue = true;    
#endif
                return retValue;
            }
        }

        public static bool IsEditor
        {
            get
            {
                bool retValue = false;
#if UNITY_EDITOR
                retValue = true;    
#endif
                return retValue;
            }
        }

        public static bool IsiOS
        {
            get
            {
                bool retValue = false;
#if UNITY_IOS
                retValue = true;    
#endif
                return retValue;
            }
        }
    }

 

 

 

注意事项:

       1.在有 Platform 的条件语句块里,不能使用平台特有的 API ,如果要使用这种 API 还是建议封装一下,平台特有的 API 或者 宏 最好不要出现在 UI 或者 逻辑层代码中。

       2.Platform.cs 这个类不能打成 dll.(暂时还不能理解)

 

你可能感兴趣的:(#,框架QFramework)