숙련 된 개발자이지만 많은 코드 검토를 수행하지 않았습니다. 파이썬으로 작성된 코드를 검토하라는 요청을 받았지만 파이썬을 모르겠습니다.
내가 모르는 언어로 코드를 검토하는 것이 어떤 의미가 있습니까?
숙련 된 개발자이지만 많은 코드 검토를 수행하지 않았습니다. 파이썬으로 작성된 코드를 검토하라는 요청을 받았지만 파이썬을 모르겠습니다.
내가 모르는 언어로 코드를 검토하는 것이 어떤 의미가 있습니까?
답변:
어떤 의미입니까? 예. 프로그래밍 언어 의 의미 에 대해 아무것도 모르더라도 문자를 읽고 일관성이없는 형식, 주석 누락, 잘못 선택된 식별자, 명백한 복제 등을 확인할 수 있습니다.
당신의 시간 비용을 상환하기에 충분한 의미, 또는 충분한 의미 ? 잘 모르겠습니다. 이는 귀하의 입장, 팀의 워크 플로에서 코드 검토의 중요성 및 충분히 정량화 할 수없는 몇 가지 다른 요인에 따라 다릅니다.
enumerate
있습니다.) 나는 당신의 의견이 왜 익숙하지 않은 언어를 복습하려고 노력 하는가에 대한 훌륭한 예라고 생각합니다.
Code Review Stack Exchange 에서 정기적으로 기고자로서 언어와 무관 한 문제로 많은 질문을 받았습니다.
그리고 목록은 계속됩니다. 그러나 언어를 알 필요는 없지만 여전히 이러한 문제 / 포인트를 검토 할 수 있습니다.
우리의 최고 사용자 중 일부는 적극적으로 사용하지 않거나 모르는 언어로 최고의 답변을 얻습니다. 상위 10 개 중 2 개조차도 내 컴퓨터에서 컴파일 / 실행할 수없는 언어로되어 있습니다.
심지어 누군가의 의사 코드를 검토하는 것과 동일하다고 말할 수도 있습니다. 당신이 이해하는 것과 관련된 것들을 관찰하고 의견을 말할 수있는 한, 괜찮을 것이며, 관련 될 것입니다.
내 생각에 결론은 다음과 같습니다.
파이썬을 모르는 특정 상황에서는 특히 주의해야합니다. 파이썬에는 좋은 관용구가 다른 언어에서 기대할 수있는 것과 크게 달라지게하는 많은 관용구와 표준 관행이 있습니다. (실제로, 파이썬이 강조하는 것들로 인해 코드 가 다른 언어로 더 좋아 보이게되었다고 생각합니다 .) PEP8 외에도 파이썬이 권장하는 사고 방식을 완전히 놓칠 수있는 좋은 예가 있습니다.
간단한 예를 봅시다. 이 코드를 보자 :
f = open('/home/me/something.txt')
try:
content = f.read()
finally:
f.close()
이 코드의 문제를 보시겠습니까? 파이썬으로 작업하지 않았다면 아마 그렇지 않을 것입니다. 문제는 있다는 것입니다 많이 하지 파이썬에서 선호하는 스타일 정확히 같은 일이 :
with open('/home/me/something.txt') as f:
content = f.read()
이것은 컨텍스트 관리자입니다. 그들이 좋은 점을 알고 있습니까? 언제 사용하는 것이 적절한 지 알고 있습니까? 자신 만의 것을 만드는 것이 언제 적절한 지 아십니까? 아니? 그렇다면 파이썬을 검토 할 준비가되지 않았을 것입니다.
다른 예를 봅시다.
def add_fifty(other_list):
result = list()
for i in other_list:
result.append(i + 50)
return result
x = range(10)
y = add_fifty(x)
문제가 보입니까? 문제는이 방법이 완전히 불필요하다는 것 입니다. 작업이 이렇게 간단한 경우에는 이해력을 사용해야합니다.
x = range(10)
y = [i + 50 for i in x]
그것을 보지 못했다면 파이썬의 기능과 관용구에 익숙하지 않습니다.
Python을 모르기 때문에 Python 코드를 정확하게 검토하도록 요청했을 수도 있습니다 . 팀에 "어리 석음"을 갖는 것이 유용한 관리 이론 이 있습니다. 나는 당신에게 나쁜 이름을 부르지 않습니다 :) 아이디어는 팀이 그룹 사고로 고통 받고 터널 비전을 개발할 수 있다는 것입니다. 이 문제를 해결하는 한 가지 방법은 다른 팀 구성원이 "어리 석음"을 고려할 팀원, 즉 주제를 모르는 사람을 포함시키는 것입니다. 자신에게 알리기 위해 질문을 할 것이며, 다른 팀 구성원이 고려하지 않은 관점에서 질문이 나올 것입니다.
당신은 파이썬을 모른다. 그래서 파이썬 코더들에게 평범하게 보일 수있는 것은 당신에게 이상하게 보일 수있다. 팀이 고려하지 않은 개선을 제안 할 수 있습니다.
코드 검토는 잘못된 철자와 잘못된 형식의 변수를 검색하는 것이 아닙니다. 코드 검토를 사용하여 그러한 것을 찾으면 시간 낭비를 멈추고 도구를 사용하십시오.
코드 검토는 초보자 프로그래머가 설계를 개선하고 일반적인 실수를 감지하는 것입니다.
C ++로 프로그래밍하고 파이썬을 충분히 알지 못하므로 파이썬 코드를 감히 감히하지 않을 것입니다. 그러나 Java 코드 검토를 도울 수 있습니다.
프로그래밍 언어를 말하지 않았지만 프로그래밍 언어를 모르는 경우 코드 검토에 기여할 수있는 내용이 없습니다.
당신은 반드시 유일한 검토자가 아니어야 하지만, 당신 이 검토 자 중 하나 가되어야 할 많은 이유가 있습니다 . 언어를 알지 못하는 것은 코드 검토에서 대답해야하는 많은 질문에 방해가되지 않습니다. 예를 들어, 저는 이 사이트 의 C # 태그 에서 상위 20 명의 답변자 중 한 명이며 C # 에서는 컴파일 된 hello world만큼 많지 않습니다.
언어를 몰라도 공유 할 수있는 몇 가지 전문 지식 :
또한 새로운 제품의 속도를 높이는 좋은 방법입니다. 방금 새 팀에 합류하여 언어를 잘 사용하지만 도메인을 모릅니다. 코드 검토에 참여함으로써 도메인 측면을 더 잘 배울 수는 없었지만 도메인 측면을 더 잘 배울 수있었습니다.
귀하의 경우 다른 검토자가 남겨둔 의견을 보면서 새 언어의 관용구를 배우는 좋은 방법이 될 것입니다. 인터프리터는 코드가 파이썬인지 아닌지를 신경 쓰지 않기 때문에 다른 방법으로는 배우기가 매우 어려운 종류입니다.
이것은 상생의 상황 일 수 있습니다. 나는 당신이 지식 의 저주에 의해 오염되지 않은 파이썬 처녀 이기 때문에 당신이 특히 귀중한 검토자가 될 수 있다고 말할 것입니다 .
이런 식으로 생각하십시오 : 파이썬 처녀조차도 그것을 이해할 수있을 정도로 코드가 명확하다면, 그것은 좋은 코드 여야합니다. 이해하기 어려운 부분은 재 작업 또는 더 나은 주석의 후보 일 수 있습니다.
당신이 갈 때 새로운 언어를 선택할 것이기 때문에, 그것은 또한 당신에게도 유익 할 것입니다. (행복하게도, 여러분이 제공 한 코드는 배우기 좋은 예입니다.)이 배열은 "실행 가능한 의사 코드"라는 평판을 가진 언어 인 Python에 특히 효과적입니다. 숙련 된 개발자라면 파이썬 프로그램의 요점을 이해하는 데 큰 어려움이 없어야합니다.
주의 사항은 언어 별 문제로 인해 발생하는 버그를 발견하지 못할 것이라는 점 입니다. 그러나 버그 찾기 만이 코드 검토의 목적은 아닙니다. 다른 것이 없다면, 동료의 코드에서 어떤 종류의 일이 일어나고 있는지를 인식함으로써 지식 이전에 참여하게 될 것입니다.
한때 하청 업체가 수행 한 프로젝트를 감사하라는 요청을 받았으며 심각한 성능 문제가있는 것으로 보입니다. 중요한 요소가 단일 Perl 모듈이라는 것을 금방 알았습니다. 나는 전에 Perl을 본 적이 없었으며 그것을 아는 조직에는 아무도 없었으므로 직접 이해하려고 노력했습니다. 나는 세부 사항을 이해하는 한 결코 얻지 못했지만 사용중인 알고리즘이 데이터 크기에서 2 차적이라는 것이 매우 분명했으며 이것이 모든 문제의 원인이었습니다. 그렇습니다. 완전히 이해하지 못하는 언어로 코드를 읽는 것은 확실히 생산적 일 수 있습니다. 보너스는 당신이 그것에 대해 새로운 트릭을 배우는 것입니다.
몇 가지 관찰 :
1) 숙련 된 개발자라면, 작업을함으로써 파이썬 (또는 최소한 알아야 할만큼)을 선택하게됩니다. "행함으로써 배우는"경우가 될 것입니다. 처음에는 어려울 것이지만 언어를 선택하면 더 쉬워 질 것입니다. 이것을 다른 언어를 배울 수있는 기회로 생각하십시오 (사람들은 종종 "몰입"을 통해 "외국어"언어를 배웁니다).
2) SE 사이트에는 "비 기술적"이지만 문법, 커뮤니케이션 및 논리에 능숙한 귀중한 사람들이 많이 있습니다. 그러한 사람들은 피험자에게 "신선한 눈"을 가져오고, 다른 사람들이 그리워하는 많은 "두뇌가없는"수정을합니다. 논리 및 전체 프로그래밍에 정통한 "기술적"(비 파이썬) 기술에 대해 아마 상담을 받고 있습니다.
많은 코드 검토를 수행하지 않은 경우 거의 모든 코드 검토 경험이 개발자로서 도움이 될 것입니다. 이것은 당신의 기술과 요구와 팀의 기술 사이에 잘 어울리는 것 같습니다.
이는 검토의 목표가 무엇인지에 달려 있습니다. 즉, 효과적인 의미 입니다.
여전히 일부 문제를 감지 할 수 있습니다. 당신이 그들이 검토해야 할 전부이고 그들은 당신이 그것을 살펴 보는 것이 도움이되고 무언가를 잡을 수 있기를 바라고 있습니다. 많은 구조 개념이 언어간에 유사합니다. 특히 댓글을 검토 할 수 있습니다. 특정 언어를 사용하지 않는 프로그래머는 여전히 무슨 일이 일어나고 있는지 잘 이해할 수 있어야합니다. 그렇지 않다면 ... 그러면 주석이 부족한 곳을 알려줄 수 있습니다. 잘 주석 처리 된 경우 ... 진행중인 코드를 실제로 읽는 것이 아니라 진행중인 주석을 통해 구조를 검토 할 수 있어야합니다.
그러나 다른 많은 문제는 감지하지 못할 것입니다. 따라서 그들이 당신의 검토가 이것이 잘 만들어 지거나 실행 가능한 프로그램인지에 대한 철저한 결정이 되길 원한다면 그들은 실망 할 것입니다.
그 결과가 당신이하는 시간에 가치가 있는지의 여부는 프로젝트에 크게 좌우됩니다.