내부에서 할당하고 외부에서 접근할 수 있는 필드를 구성해야한다면 이 "private 필드, public getter" 패턴이 필요할 수 있지만 꼭 필요한 경우가 아니면 사용하지 않는 것이 좋다
// good case
class Box {
final contents = [];
}
// bad case
class Box {
Object? _contents;
Object? get contents => _contents;
}
double get area => (right - left) * (bottom - top);
String capitalize(String name) =>
'${name[0].toUpperCase()}${name.substring(1)}';
// good case
Treasure? openChest(Chest chest, Point where) {
if (_opened.containsKey(chest)) return null;
var treasure = Treasure(where);
treasure.addAll(chest.contents);
_opened[chest] = treasure;
return treasure;
}
// bad case
Treasure? openChest(Chest chest, Point where) => _opened.containsKey(chest)
? null
: _opened[chest] = (Treasure(where)..addAll(chest.contents));