너무 부정적이지는 말아요
10435 단어 codenewbiecodequalityruby
너무 부정적이지는 말아요
불필요하게 복잡한 부정적인 상태를 발견할 때마다 뇌가 아프고 약간 움찔합니다. 또한 완벽하게 명확하고 정직하게 말씀드리자면, 저는 이러한 예와 조금이라도 유사한 내용을 작성한 적이 없습니다. 끔찍한 코드를 작성한 적이 없는데 왜 내가 끔찍한 코드를 작성했다고 말할까요?
내가 의미하는 바를 보여 드리겠습니다.
# Is the collection NOT empty?
if !collection.empty?
또는
# Is the thing NOT nil?
if !thing.nil?
더 나쁜 것은 부정적인 조건이 unless
와 짝을 이루는 경우입니다.
# UNLESS the collection is NOT empty, do the next thing.
unless !collection.empty?
또는 Ruby에서 가장 극악무도한 이중 부정에 대해 보편적으로 동의합니다.
# UNLESS the thing is NOT nil, do the next thing.
unless !thing.nil?
여기서 요점은 어떤 이유에서인지 부정적인 논리는 긍정적으로 표현된 논리보다 항상 이해하기 어려운 것처럼 보인다는 것입니다.
Ruby는 Negatives의 사용을 보증하기에는 너무 표현적입니다.
인간의 뇌는 수십만 년 전에 많은 일을 잘하도록 진화했지만 부정적인 논리를 추적하는 것은 그 중 하나가 아닙니다. 적어도 내 특정 인간 두뇌의 경우입니다.
Ruby는 표현력이 뛰어나므로 if !collection.nil?
와 같이 읽기 어려운 난센스 코드를 작성할 필요가 없습니다.
대신 긍정적인 목소리로 조건을 작성해야 합니다.
컬렉션이 비어 있지 않다는 것은 하나 이상의 요소가 있는 컬렉션을 말하는 것과 같습니다. 아무것도 아닌 것은 존재하는 것을 말하는 것과 같다.
나쁜
if !collection.empty?
좋은
# present is a rails-ism
if collection.present?
Rails를 사용하지 않는다면? Ruby에는 우리를 위한 몇 가지 non-negative 도구도 있습니다!
irb(main):001:1* collection = []
=> []
# Is there at least one element in our collection that is not
# `nil` or `false`? In other, clearer, words are any of the
# elements in our collection truthy?
irb(main):002:0> collection.any?
=> false
컬렉션이 비어 있지 않을 때 일부 코드를 실행하는 것이 목표라면 any?
가 꽤 좋은 선택입니다.
irb(main):001:0> collection = ['hello, world!']
=> ["hello, world!"]
irb(main):002:0> collection.any?
=> true
그러나 약간의 이상함이 있을 수 있습니다.
irb(main):006:0> collection = [nil]
=> [nil]
irb(main):007:0> collection.any?
=> false
나는 Rails의 present?
가 내가 예상한 대로 동작한다고 생각한다. 그래서 내가 거의 항상 Rails 컨텍스트에서 Ruby를 작성하기 때문에 내가 가장 자주 사용하는 도구가 된다.
[1] pry(main)> collection = []
=> []
[2] pry(main)> collection.present?
=> false
[3] pry(main)> collection = ['hello, world!']
=> ["hello, world!"]
[4] pry(main)> collection.present?
=> true
# Careful now. But, this kind of makes sense. There is something
# in the collection after all. That something just happens to be nothing.
[5] pry(main)> collection = [nil]
=> [nil]
[6] pry(main)> collection.present?
=> true
# :mindblown:
nil?
부정 수표를 살펴보겠습니다. 우리가 thing
NOT nil?
라고 물을 때 우리가 실제로 말하는 것은 무엇입니까? 우리는 정말로 묻습니다. thing
가 있습니까?
나쁜
if !thing.nil?
좋은
if thing
사물이 nil
, true
또는 false
일 수 있고 thing
이 true
또는 false
인 경우에만 진행하려는 경우 다음을 시도해야 합니다.
# Again, stick to the positives.
if [true, false].include? thing
내 경험상, 이것은 일반적으로 잘못된 값을 확인하는 것으로 충분하기 때문에 예외 사례 범주에 제출할 수 있습니다.
허용되는 용도
메소드의 맨 처음에 가드 문으로 사용하는 것이 허용되는 것은 단 한 가지뿐입니다. 복합, 다중 절 논리를 사용할 수 없습니다. 동료를 미워하지 않기 때문에 방법의 맨 처음 줄 외에는 어디에도 배치할 수 없습니다.
나쁜
unless condition
...
end
또한 나쁜
def foo
# some code
...
unless something_happened_in_the_above_code
end
end
최악의
# This is an if
unless !condition
...
end
좋은
def foo
return unless condition
# mandatory empty line as a sign of humility.
...
# remaining implementation that should only run if the condition is truthy.
end
관련된 모든 사람들에게 코드 기반을 더 긍정적인 장소로 만들자. 부정을 최소한으로 유지하십시오.
Reference
이 문제에 관하여(너무 부정적이지는 말아요), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/planetefficacy/stop-being-so-negative-1mm3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# Is the collection NOT empty?
if !collection.empty?
# Is the thing NOT nil?
if !thing.nil?
# UNLESS the collection is NOT empty, do the next thing.
unless !collection.empty?
# UNLESS the thing is NOT nil, do the next thing.
unless !thing.nil?
인간의 뇌는 수십만 년 전에 많은 일을 잘하도록 진화했지만 부정적인 논리를 추적하는 것은 그 중 하나가 아닙니다. 적어도 내 특정 인간 두뇌의 경우입니다.
Ruby는 표현력이 뛰어나므로
if !collection.nil?
와 같이 읽기 어려운 난센스 코드를 작성할 필요가 없습니다.대신 긍정적인 목소리로 조건을 작성해야 합니다.
컬렉션이 비어 있지 않다는 것은 하나 이상의 요소가 있는 컬렉션을 말하는 것과 같습니다. 아무것도 아닌 것은 존재하는 것을 말하는 것과 같다.
나쁜
if !collection.empty?
좋은
# present is a rails-ism
if collection.present?
Rails를 사용하지 않는다면? Ruby에는 우리를 위한 몇 가지 non-negative 도구도 있습니다!
irb(main):001:1* collection = []
=> []
# Is there at least one element in our collection that is not
# `nil` or `false`? In other, clearer, words are any of the
# elements in our collection truthy?
irb(main):002:0> collection.any?
=> false
컬렉션이 비어 있지 않을 때 일부 코드를 실행하는 것이 목표라면
any?
가 꽤 좋은 선택입니다.irb(main):001:0> collection = ['hello, world!']
=> ["hello, world!"]
irb(main):002:0> collection.any?
=> true
그러나 약간의 이상함이 있을 수 있습니다.
irb(main):006:0> collection = [nil]
=> [nil]
irb(main):007:0> collection.any?
=> false
나는 Rails의
present?
가 내가 예상한 대로 동작한다고 생각한다. 그래서 내가 거의 항상 Rails 컨텍스트에서 Ruby를 작성하기 때문에 내가 가장 자주 사용하는 도구가 된다.[1] pry(main)> collection = []
=> []
[2] pry(main)> collection.present?
=> false
[3] pry(main)> collection = ['hello, world!']
=> ["hello, world!"]
[4] pry(main)> collection.present?
=> true
# Careful now. But, this kind of makes sense. There is something
# in the collection after all. That something just happens to be nothing.
[5] pry(main)> collection = [nil]
=> [nil]
[6] pry(main)> collection.present?
=> true
# :mindblown:
nil?
부정 수표를 살펴보겠습니다. 우리가 thing
NOT nil?
라고 물을 때 우리가 실제로 말하는 것은 무엇입니까? 우리는 정말로 묻습니다. thing
가 있습니까?나쁜
if !thing.nil?
좋은
if thing
사물이
nil
, true
또는 false
일 수 있고 thing
이 true
또는 false
인 경우에만 진행하려는 경우 다음을 시도해야 합니다.# Again, stick to the positives.
if [true, false].include? thing
내 경험상, 이것은 일반적으로 잘못된 값을 확인하는 것으로 충분하기 때문에 예외 사례 범주에 제출할 수 있습니다.
허용되는 용도
메소드의 맨 처음에 가드 문으로 사용하는 것이 허용되는 것은 단 한 가지뿐입니다. 복합, 다중 절 논리를 사용할 수 없습니다. 동료를 미워하지 않기 때문에 방법의 맨 처음 줄 외에는 어디에도 배치할 수 없습니다.
나쁜
unless condition
...
end
또한 나쁜
def foo
# some code
...
unless something_happened_in_the_above_code
end
end
최악의
# This is an if
unless !condition
...
end
좋은
def foo
return unless condition
# mandatory empty line as a sign of humility.
...
# remaining implementation that should only run if the condition is truthy.
end
관련된 모든 사람들에게 코드 기반을 더 긍정적인 장소로 만들자. 부정을 최소한으로 유지하십시오.
Reference
이 문제에 관하여(너무 부정적이지는 말아요), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/planetefficacy/stop-being-so-negative-1mm3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
unless condition
...
end
def foo
# some code
...
unless something_happened_in_the_above_code
end
end
# This is an if
unless !condition
...
end
def foo
return unless condition
# mandatory empty line as a sign of humility.
...
# remaining implementation that should only run if the condition is truthy.
end
Reference
이 문제에 관하여(너무 부정적이지는 말아요), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/planetefficacy/stop-being-so-negative-1mm3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)