【问题标题】:Is it acceptable to repeat variables, when listing variables for certain objects?列出某些对象的变量时是否可以重复变量?
【发布时间】:2013-09-20 00:31:18
【问题描述】:

这是一个例子:

公共列表 getPizzaIngredients(pizzaName) { 如果 PizzaName = HAWAIIAN 返回 [ 起司, 番茄酱, 菠萝, 火腿]; 如果 PizzaName = ITALIAN 返回 [ 起司, 番茄酱, 意大利辣香肠, 橄榄]; 如果比萨名称 = 肉食 返回 [ 起司, 番茄酱, 意大利辣香肠, 熏肉, 香肠, 橄榄]; 返回空值; }

在这里,我们在每个列表中重复成分。另一种方法是:

公共列表 getPizzaIngrediants(pizzaName) { ing = []; ing.add(奶酪) ing.add(番茄酱); if PizzaName in (HAWAIIAN) ing.add(PINEAPPLE); if PizzaName in (HAWAIIAN) ing.add(HAM); if PizzaName in (ITALIAN, MEATLOVERS) ing.add(PEPPERONI); if PizzaName in (ITALIAN, MEATLOVERS) ing.add(OLIVES); if PizzaName in (MEATLOVERS) ing.add(BACON); if PizzaName in (MEATLOVERS) ing.add(SAUSAGE); 返回;

或者我们可以让它更简洁:

公共列表 getPizzaIngrediants(pizzaName) { ing = []; ing.add(奶酪,番茄酱) if PizzaName in (HAWAIIAN) ing.add(PINEAPPLE, HAM); if PizzaName in (ITALIAN, MEATLOVERS) ing.add(PEPPERONI, OLIVES); if PizzaName in (MEATLOVERS) ing.add(BACON, SAUSAGE); 返回;

现在就个人而言 - 虽然第一个示例更冗长并且涉及重复变量,但它比其他两个解决方案更具可读性和更容易修改。

对于这种编程风格/问题是否有约定?

【问题讨论】:

  • 因为这个问题主要是基于意见的,所以这个问题没有一个答案,因此应该关闭。
  • 我不同意 - 这不是一个只能通过意见来回答的问题。问题是是否存在围绕此类标准编程任务的约定。我想说,虽然没有标准,但您会发现如何实施这样的解决方案通常取决于您的环境。在工作场所,您可能有规定效率或可读性的标准;我想这与你所处的情况有关。但是,我认为在上述情况下,处理它的“正确方法”更多的是关于您是否正在寻找效率、可读性或介于两者之间的东西

标签: coding-style conventions


【解决方案1】:

如果您只有常量 HAWAIIAN ITALIAN MEATLOVERS,请将它们放在一个枚举中,最好采用第一种格式 - 美观且易读。

如果比萨和配料很可能会成为真正的概念,并有可能在未来改变(蔬菜?!?各种奶酪?),所有这些都将打破,在无需对您的代码进行任何更改的感觉。所需要的只是比萨饼除了配料之外的第二个属性(价格()?美味()?),对于每个新的比萨饼,您必须在多个地方编写代码。然后,您应该使用适当的面向对象设计,具有抽象 Pizza 和 Ingredients 子类的类层次结构。

Head First Design Patterns 的 Factory 章节中有一个冗长的披萨店示例,涵盖非常相似的内容。

【讨论】:

    猜你喜欢
    • 2012-12-05
    • 2018-02-17
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 2013-03-28
    • 2023-03-15
    相关资源
    最近更新 更多