我有一个关于最佳设计实践的问题。我一直试图在项目中构建更多不变的组件,因为从长远来看,它们更易于维护,并且想要对其进行测试。
当您的班级拥有不可变的数据成员时,请说
public/private final int importantNumber = 3;
Run Code Online (Sandbox Code Playgroud)
应该将int仍然声明为私有并赋予访问器方法,还是由于其终结符,允许直接访问并使其公开有什么困难?我看不到有任何公开问题,因为您无法更改它。
在我的情况下,不可变对象是使用传递给它的值创建的,然后将自动从数据库中填充其他对象,一切都是最终的。
还是这仅仅是一个偏好问题,会引发一场宗教战争?由于存在关于从类内部访问数据成员的许多问题,因此我想明确地说,我是从另一个尝试获取值的外部类询问的。
我正在完成一项学校作业.我想做的不是作业的重点,而只是我想做得更好的事情.
我有以下if语句,其中equation是一个字符串
if( (equation[0]== "*") || (equation[0]== "/") || (equation[0]== "+") || (equation[0]== "-"))
Run Code Online (Sandbox Code Playgroud)
它只是检查字符串的第一个和最后一个字符是否是4个运算符之一.这是漫长的,笨重的,并且希望不是最好的方法.遗憾的是,我无法访问正则表达式,因为这种类型的检查很容易使用它们.
有没有更好的方法来编写if语句而不使用正则表达式?有点像
if( equation[0] == ("/" || "*" || "+" || "-"))
Run Code Online (Sandbox Code Playgroud) 我正在研究我认为相当直接的数组公式,我只需要一个单元格条目,而不必将其复制到 100 多行。
我正在制作一个电子表格,用于 Pathfinder 中的野兽形状、元素身体和植物形状法术。
我的桌子看起来像
_________A___________B____C
1___拼写名称_____类型_____尺寸
其中 A2 将包含数组公式。B2:B 将包含动物、植物、元素、魔兽。C2:C 将包含大小范围。
我试过了
ARRAYFORMULA(if(B2:B<>"",CONCATENATE(if(AND(B2:B="Animal", OR(C2:C="Small", C2:C="Medium")),"野兽形状1 ","失败 BS1"),if(AND(B2:B="Animal", OR(C2:C="Tiny", C2:C="Large")),"野兽形态 2","失败 BS2" )),“失败其他”))
和
=ARRAYFORMULA(if(B2:B<>"",if(and(B2:B="Animal",C2:C="Small"),"Beast Shape 1", "not"), "if fail") )
但是它们会产生错误的输出。我也尝试了其他几个,但有各种问题,通常没有传播到所有细胞,或者只是有错误的信息。即使我尝试只使用一个语句。
最初我的计划是有一个包含多个 if 语句的 concat 语句,这些语句会产生法术名称或什么都不产生。它看起来像
arrayformula(if(b2:b<>"",concatenate(if(and(b2:b="Animal",OR(c2="small",c2="medium")), "Beast shape 1", "" ), if(and(b2:b="Animal",OR(c2="tiny",c2="large")), "Beast shape 2", ""))
但是输出是错误的,我无法弄清楚原因。我在某些地方看到过一些评论,这些评论表明 AND 和 OR 无效,因为它们具有单个输出语句,并且必须用 & 替换连接,但即使删除了它们也不起作用。