부울 플래그는 슬픈 작은 열거형입니다.

4684 단어 typescriptjavascript
저는 오늘 중간 경험 수준의 엔지니어였을 때 마침내 매우 스마트한 작업을 수행하고 고전적인true-false 로직 대신 3-상태 로직을 사용할 수 있는 몇 가지 문제를 발견했다고 생각했습니다.

"잠깐만, 이게 좋은 enum ?"그런 다음 좋은 친구enum와 함께 갔는데 모두 잘 되었습니다.

그리고 지금 나는 다시 생각하고 있습니다. 부울 플래그만큼 대신 enums로 대체하는 것이 합리적이지 않습니까 (또는 적어도 명명 된 매개 변수를 사용함).

이 예를 참조하십시오.

jsonb_set(data, '{user, role}', {
  id: 'supervisor',
  title: 'Chat group supervisor',
}, false);


이것을 작성할 때 마지막 매개변수의 false가 무엇인지 여전히 기억하고 있습니다.
나는 당신에게 약점을 줄 것이고 당신이 이 기능jsonb_set을 자주 사용하지 않는다면 당신은 그것을 기억하지 못할 것입니다.

We then waste time on things that could have been very clear.


옵션 1: 열거형 사용



enum JsonbSetOption {
  CreateIfDoesNotExist,
  ThrowErrorIfDoesNotExist
}

jsonb_set(data, '{user, role}', {
  id: 'supervisor',
  title: 'Chat group supervisor',
}, JsonbSetOption.ThrowErrorIfDoesNotExist);

기본적으로 누구나 이것이 무엇을 하는지 알 것입니다.

옵션 2: 명명된 매개변수 전달



jsonb_set(data, '{user, role}', {
  id: 'supervisor',
  title: 'Chat group supervisor',
}, { throwErrorIfDoesNotExist: true });

옵션 3: 두 가지 기능으로 분할



jsonb_set_throw_on_update_path_missing(
  data, 
  '{user, role}',
  {
    id: 'supervisor',
    title: 'Chat group supervisor',
  }
);

어느 쪽을 선택하든 그것은 당신에게 달려 있습니다. 임의의 플래그를 사용하지 마십시오.

receiveSalary(you, false, true, true, false, null);

좋은 웹페이지 즐겨찾기