toString实现的最佳标准样式是什么?

Nic*_*ole 36 javascript php java actionscript tostring

我们有很多对象,我们希望实现一个简单toString的输出对象属性.其中一些属性本身可能是复杂的对象.

是否有任何标准,或仅仅是一种风格的最佳实践?我想的是:

[SimpleClassName] { prop1:value, prop2:value }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,嵌套值将如下所示:

[SimpleClassName] { prop1:value, prop2:[NestedObject] { prop3:value}}
Run Code Online (Sandbox Code Playgroud)

我们正在使用Java,但我发现自己在大多数语言中都提出同样的问题!

Col*_*inD 31

我认为GuavaMoreObjects.toStringHelper()生成的格式非常好,但是使用一些一致的格式主要是好的:

public String toString() {
  return Objects.toStringHelper(this)
      .add("prop1", prop1)
      .add("prop2", prop2)
      .toString();
}

// Produces "SimpleClassName{prop1=foo, prop2=bar}"
Run Code Online (Sandbox Code Playgroud)


Wou*_*rts 26

就个人而言,我发现混合[]并且{}不那么容易立即查看层次结构.

我喜欢这种格式(我已经看到它在很多地方使用):

SimpleClassName[prop1=value, prop2=value]
SimpleClassName[prop1=value, prop2=NestedObject[prop3=value]]
Run Code Online (Sandbox Code Playgroud)

还有与添加的标识符的可能性@,例如默认样式公共琅 ToStringBuilder确实是(用自己的例子):

Person@182f0db[name=John Doe,age=33,smoker=false]
Run Code Online (Sandbox Code Playgroud)