Coding style 在列出某些对象的变量时,重复变量是否可以接受?

Coding style 在列出某些对象的变量时,重复变量是否可以接受?,coding-style,conventions,Coding Style,Conventions,下面是一个例子: public list getPizzaIngredients(pizzaName) { if pizzaName = HAWAIIAN return [ CHEESE, TOMATO SAUCE, PINEAPPLE, HAM]; if pizzaName = ITALIAN return [

下面是一个例子:

public list getPizzaIngredients(pizzaName) { if pizzaName = HAWAIIAN return [ CHEESE, TOMATO SAUCE, PINEAPPLE, HAM]; if pizzaName = ITALIAN return [ CHEESE, TOMATO SAUCE, PEPPERONI, OLIVES]; if pizzaName = MEATLOVERS return [ CHEESE, TOMATO SAUCE, PEPPERONI, BACON, SAUSAGE, OLIVES]; return null; } 公共列表GetPizzaComponents(pizzaName) { 如果pizzaName=夏威夷语 返回[ 奶酪, 番茄酱, 菠萝, 火腿]; 如果pizzaName=意大利语 返回[ 奶酪, 番茄酱, 意大利 辣味 香肠, 橄榄; 如果pizzaName=肉食爱好者 返回[ 奶酪, 番茄酱, 意大利 辣味 香肠, 培根 香肠, 橄榄; 返回null; } 这里我们重复每个列表中的成分。另一种方法是:

public list getPizzaIngrediants(pizzaName) { ing = []; ing.add(CHEESE) ing.add(TOMATO SAUCE); 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); return ing; 公共列表GetPizzaingCreditions(pizzaName) { ing=[]; 加入(奶酪) 加入(番茄酱); 如果比萨饼名称在(夏威夷)ing中,则添加(菠萝); 如果比萨饼的名字是(夏威夷语)加上(火腿); 如果比萨名称在(意大利,肉类爱好者)中,则添加(意大利香肠); 如果比萨饼名称在(意大利,肉类爱好者)中,则添加(橄榄); 如果在(肉食爱好者)中加入比萨饼,加入(培根); 如果在(肉类爱好者)中加入比萨饼,加入(香肠); 回归分析; 或者我们可以让它更简洁:

public list getPizzaIngrediants(pizzaName) { ing = []; ing.add(CHEESE,TOMATO SAUCE) 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); return ing; 公共列表GetPizzaingCreditions(pizzaName) { ing=[]; 加入(奶酪、番茄酱) 如果比萨饼的名字在(夏威夷)ing.加入(菠萝,火腿); 如果比萨饼名称在(意大利,肉类爱好者)中,加入(意大利香肠,橄榄); 如果比萨饼在(肉类爱好者)中,加入(培根、香肠); 回归分析; 现在就我个人而言,虽然第一个示例更为冗长,并且涉及重复变量,但它比其他两个解决方案更易于阅读和修改


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

如果你有夏威夷-意大利肉类爱好者,请将他们放入枚举中,最好是第一种格式-美观易读

如果比萨和配料很有可能成为未来可能发生变化的真正概念(素食?!?奶酪种类?),那么所有这些都将被打破,因为你的代码没有任何变化。除了配料(price()?tasty()?)之外,比萨还需要第二个属性对于每一个新的比萨饼,你必须在多个地方编写代码,然后你应该使用一个适当的面向对象的设计,一个包含比萨饼抽象和配料子类的类层次结构


在Head First Design Patterns的工厂章节中有一个很长的比萨饼店示例,涵盖了非常相似的领域。

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