Write Clearly
Be concise
- 에러 메시지를 간결하게 작성합니다.
- 무엇이 중요한지 강조
- 불필요한 텍스트 제거
- DB로의 연결 실패 예시 :
bad
Unable to establish connection to the SQL database.
goodCan’t connect to the SQL database.
- 클러스터 내에 리소스가 존재하지 않는 경우 예시 :
bad
The resource was not found and cannot be differentiated. What you selected doesn’t exist in the cluster.
goodResource name isn’t in cluster name
- 수동태를 능동태로 바꾸면 더 간결하고 이해하기 쉬운 문장을 만들 수 있습니다.
- App이 더이상 특정 연산자를 지원하지 않음 예시 :
bad
The Froobus operation is no longer supported by the Frambus app.
goodThe Frambus app no longer supports the Froobus operation.
- App이 더이상 특정 연산자를 지원하지 않음 예시 :
- 너무 과하게 단어를 줄이면 에러 메시지는 암호처럼 느껴집니다.
- 무엇을 지원하지 않는지 알 수 없을 경우 예시 :
bad
Unsupported
- 무엇을 지원하지 않는지 알 수 없을 경우 예시 :
Avoid double negatives
- 독자들은 이중 부정을 이해하기 어려워합니다.
- 예시 :
bad
You cannot not invoke this flag.
goodYou must invoke this flag.
- 예시 :
- 더 미묘한 이중 부정도 있습니다.
- prevents와 forbidding이 부정의 의미로 사용된 예시 :
bad
The universal read permission on pathname prevents the operating system from forbidding access.
goodThe universal read permission on pathname enables anyone to read this file. Giving access to everyone is a security flaw. See hyperlink for details on how to restrict readers.
- prevents와 forbidding이 부정의 의미로 사용된 예시 :
- 예외의 또 다른 예외를 만드는 것을 피합니다.
- 예시 :
bad
The App Engine service account must have permissions on the image, except the Storage Object Viewer role, unless the Storage Object Admin role is available.
goodThe App Engine service account must have one of the following roles : - Storage Object Admin - Storage Object Creater
- 예시 :
Write for the target audience
- 에러 메시지를 대상 독자에게 맞춥니다 :
- 적절한 용어 사용
- 대상 독자가 아는 것과 모르는 것을 염두하자
- 다음 메시지는 ML 전문가에게만 적절하다.
- “Exploding gradient problem. To fix this problem, consider gradient clipping”
- 온라인 쇼핑몰에 트래픽이 몰려 결재에 실패할 경우를 살펴보겠습니다.
- 기술적 지식이 없는 접속자는 아래의 메시지를 이해하기 어렵습니다.
- “A server dropped your client’s request because the server farm is running at 92% CPU capacity. Retry in five minutes.”
- 아래 메시지처럼 바꿔주면 좋을 것입니다.
- “So many people are shopping right now that our system can’t complete your purchase. Don’t worry. we won’t lose your shopping cart. Please retry your purchase in five minutes.”
- 기술적 지식이 없는 접속자는 아래의 메시지를 이해하기 어렵습니다.
Use terminology consistently
- 용어를 일관되게 사용합니다.
bad
Can’t connect to cluster at 127.0.0.1:56. Check whether minikube is running.
goodCan’t connect to minikube at 127.0.0.1:56. Check whether minikube is running.
- 에러 메시지에 일관된 형식과 모순되지 않은 내용이 나타나야 합니다.
- 같은 문제에는 같은 에러 메시지가 발생합니다.
Format error messages to enhance readability
-
긴 설명이 필요하다면, 자세한 문서 링크로 유저를 리다이렉트 해줍니다.
badPost contains unsafe information.
goodPost contains unsafe information. Learn more about safety at link to documentation.
-
유저는 때때로 긴 에러 메시지를 무시합니다. 간결한 버전의 에러 메시지를 보여주고, 전체 내용을 볼 수 있는 옵션을 제공합니다.
badTextField widgets require a Material widget ancestor, but none were located. In material design, most widgets are conceptually “printed” on a sheet of material. To introduce a Material widget, either directly include one or use a widget that contains a material itself.
goodTextField widgets require a Material widget ancestor, but none were located. …(Click to see more.) In material design, most widgets are conceptually “printed” on a sheet of material. To introduce a Material widget, either directly include one or use a widget that contains a material itself.
-
코드 에러는 가능한 에러가 발생한 곳에 에러 메시지를 위치합니다.
bad1: program figure_1;
2: Grade = integer;
3: var
4: print("Hello")
Use ':' instead of '=' when declaring a variablegood1: program figure_1;
2: Grade = integer;
Use ':' instead of '=' when declaring a variable
3: var
4: print("Hello") -
놀랍게도 많은 독자들이 색맹이라, 색상을 사용할 때 조심해야합니다.
- 빨간색/녹색 조합을 피합니다.
- 볼드체를 함께 사용합니다.
- 컬러가 변환되는 구간에 여분의 스페이스를 추가합니다.
- 색상 말고 다른 하이라이트 방법을 사용합니다.
3728LJ947
^^
Set the right tone
- 에러 메시지의 어조는 큰 영향을 미칠 수 있습니다.
Be positive
- 잘못보다, 올바른 것이 무엇인지 말해줍니다.
bad
You didn’t enter a name.
goodEnter a name.