全局变量或棘手的变量传递方案?

时间:2010-07-15 15:21:36

标签: c# ipad coding-style xamarin.ios

作为一个背景,我即将成为Comp E的高年级学生,目前正致力于一个项目,我的实习涉及使用Monotouch和C#的iPad开发。作为一个在学期中同时拥有多个项目的学生,代码风格通常被完全忽略,以使最终产品正常运行。我相信你们都知道那是什么样的。

现在我有更多的时间来开发,规划和设计我的代码,我陷入了“快速简单的方式”或“复杂的棘手方式”之间。我将概述我的设计(开头可能很糟糕)并欢迎所有建议。

我正在创建一个简单的iPad应用程序,用户可以选择汽车制造,然后该选择使用不同的模型填充屏幕另一侧的图像。现在,当用户选择该模型时,它会将它们带到另一个屏幕,在那里我要求更多信息,例如价格,年份等等。在第二个屏幕上,我将所选汽车模型的图像作为“提醒”的内容当屏幕改变时,你会再次搜索。现在填充该图像取决于选择了哪个品牌以及哪个品牌。这些都是基于2D信息阵列完成的。所以Cars [0] [3]将是Acura-TSX车型,Cars [1] [0] - BMW 1系。

现在试图摆脱将大家扔进一个巨大MAIN的大学思维模式,我知道它并不漂亮,但它起作用,大学是关于点而不是风格,我已经开始将事情分解为函数和辅助函数。当我调用将切换屏幕并最终加载图像的函数时,我必须传递makeIndex和modelIndex,这些是在先前选择make和models之后设置的,因此有一堆调用/返回和变量传递。在我看来,解决这个问题的简单方法就是2个全局变量,但我知道这是不好的做法,我正在努力开发更好的编码风格。

您对如何做到这一点有什么建议?简单地说“拧好练习”并选择快速有效的方法会更好吗?或者我是否应该花时间并为了多种功能而重新开始传递,因为他们中的许多人需要知道这些信息?

感谢您花时间阅读本文并感谢您的建议。

- 亚当

3 个答案:

答案 0 :(得分:2)

为什么不使用单例模式,并且有类似的东西:

public sealed class CarConfigurationSettings
{
    public string Make{get; set; }

    static readonly CarConfigurationSettings instance=
                                    new CarConfigurationSettings();

    static CarConfigurationSettings()
    {
    }

    CarConfigurationSettings()
    {
    }

    public static CarConfigurationSettings Instance
    {
        get
        {
            return instance;
        }
    }
}

然后你的应用中的任何地方都可以去:

var make = CarConfigurationSettings.Instance.Make;

尼斯。

答案 1 :(得分:1)

它应该归结为你的目标。你有兴趣:

  • 学习和练习好的风格,导致易于维护的应用程序?
  • 完成项目并抛弃代码?

这个实习项目听起来像是一个真正的客户。实习结束后,谁将维护此申请?在您离开或实习结束后,将花费多少时间和精力来增强产品?

我建议坚持你所走的道路。您建议您有更多时间进行规划和设计。你的同事会很感激你投入了一些智力,甚至把它带到了一个社区来获得反馈。

答案 2 :(得分:0)