언어에 익숙하지 않을 때 코드 품질을 평가하는 방법은 무엇입니까? [닫은]


10

가설 적으로, 내 경험이 .NET에있을 때 새로운 PHP 개발자 입장에서 누군가와 인터뷰를한다면, 그들이 제공 한 코드 샘플이 효율적이고 좋은 품질인지 어떻게 알 수 있습니까?

다시 말해, 언어에 익숙하지 않은 경우 프로그래머의 코드를 평가하는 가장 좋은 방법은 무엇입니까?


1
나는 당신에게 그것을 나누는 것을 싫어하지만, 당신은 :-) 언어를 알고 있거나 스스로 배우는 사람을 인터뷰에 포함시키지 않습니다.
Joppe December

2
이것이 인터뷰가 팀의 노력 인 이유입니다. 당신은 당신이 평가할 수있는 것을 평가하고, 이런 종류의 것들을 잘 알고있는 일부 기술 팀장에게 연기합니다.
Kaz

나에게 가장 좋은 지표는 함수의 크기 (여기서는 중첩 깊이 포함)와 클래스 / 파일의 크기입니다.
m3th0dman

답변:


20

그들이 제공 한 코드 샘플이 효율적이고 좋은 품질인지 어떻게 알 수 있습니까?

평가할 수없는 것은 언어 숙어와 라이브러리 사용법의 올바른 사용입니다. 따라서 이것들은 당신이 보려고 시도하는 것이 아닙니다.

당신이 평가할 수있는 것은 :

  • 코드가 어떻게 구성되어 있는지
  • 잘 명명 된 변수 (사물을 이해할 수 있습니까)
  • 잘 구성된 기능 / 코드 단위
  • 코드베이스의 일관성

위의 내용은 (완전하지는 않지만) 코드가 냄새가 나는지 여부를 나타내며 숙련 된 프로그래머가 좋은지 나쁜지를 식별 할 수 있어야합니다.

간단히 말해서-언어에 관계없이 좋은 코드를 나타내야 할 것들을 찾으십시오.


5
또 다른 중요한 것 : "의견은 명확하고 의미가 있고 이해하기 쉬운가?" 언어에 거의 노출되지 않은 경우에도 주석에서 코드가하는 일에 대해 조금 배울 수 있습니까?
FrustratedWithFormsDesigner

2
@FrustratedWithFormsDesigner-댓글? 저게 뭐야? 진지하게, 코드는 자체 주석이어야합니다. 주석은 그 이유를 설명하거나 잘못된 코드의 이유를 제시하기 위해서만 있어야합니다.
오디드

6
나는 극도의주의를 촉구합니다 : 당신이 익숙한 코드를 가장 잘 쓰는 사람에 따라 선택하는 것이 매우 쉽습니다.이 언어는 상대적으로 잘 사용되지 않을 수 있습니다.
Jerry Coffin

@FrustratedWithFormsDesigner Oded는 아마 당신이이 elegantcode.com/2010/04/18/을
Joel

4

인터뷰의 일부로 흐름도를 작성하거나 안내해줍니다. 당신은 물어볼 완벽한 변명의 여지가 있으며 그들이 설명하는 방법을 그들이 어떻게 생각하는지 공정하게 알려줍니다.

그들이 당신이 선호하는 언어로 넘어갈 예정이라면 당신은 많은 멘토링이 온다는 것을 알고 있으므로 어쨌든 좋은 논리 / 추론 기술을 찾고 있어야합니다.

그들이 선호하는 언어로 일을 계속하려면 누군가가 다른 사람이 어쨌든 속도를 낼 때까지 더 자세한 언어 특정 세부 사항에 대해 다소 자기 관리 할 것이라는 점을 받아 들여야합니다. 디자인 측면도 있습니다.


1
응시자가 코드의 의도와 목적이 명확하고 시각적으로 조직과 일반 구조가 합리적으로 보이도록 코드를 설명 할 수 있다면 코드가 무엇을 나타내는 지에 대한 합리적인 이해가있을 것입니다. 그리고 비슷한 깨끗한 재현을 반복 할 수 있습니다. 비록 특정 부분이 '특정 참조 자료가 그것을 수행하는 방법을 보여 주었기 때문에'적은 설명만으로도 참조 자료를 명명하는 동안 최소한 '코드'뿐만 아니라 찾을 수있는 능력을 겸손하게 표현할 수 있습니다. 일상적으로 직면하지 않는 문제에 해결책을 적용합니다.
JustinC

1

뼈 머리 / 분명히 잘못된 코드는 제쳐두고 효율적으로 문제의 언어의 컴파일러 / 인터프리터에 크게 의존하며 코드 샘플에서 실제로 눈을 able 수 없습니다. 코드 샘플은 doilies의 고급 도자기처럼 아름답게 작성되고 우아 할 수 있지만 컴파일 / 해석이 잘못되면 느리게 실행될 수 있습니다.

익숙하지 않은 언어 기능 / 구문 설탕 / 협약의 관용적 사용을 평가할 수 없습니다.

단정함, 제어 흐름, 변수 이름 지정, 작업 순서 등과 같은 보편적 인 고려 사항을 바탕으로 일반적으로 잘 작성되었는지 알 수 있어야합니다.

그러나 더 실질적으로, 어떤 언어가 프로세스에 적용되는지 알면 해당 언어에 대한 하나 이상의 스타일 가이드를 찾아서 서점에 가서 해당 언어에 대한 몇 권의 책을 넘겨 볼 수 있습니다. 선택한 언어에 익숙한 것과 유사한 아날로그를 찾는 코드 예제를 살펴보고 해당 언어를 사용하는 하나 이상의 오픈 소스 프로젝트를 확인하십시오.

시간이 있고 비용 장벽이없는 경우 해당 언어의 개발 환경을 설정하고 Hello World 앱을 크랭크하거나 코드 카타를 수행하거나 간단한 작은 앱을 작성하기까지 할 수도 있습니다 그 안에. 기본적인 참조 프레임을 신속하게 개발할 수 있으며, 문제의 코드를 검토하는 특정 목적을 달성 할 수있을뿐만 아니라 언어에 의해 강요 당할 수 있습니다.


1

언어에 관계없이 :

  • 관심사, 클래스 (OO 언어의 경우)의 적절한 사용 또는 코드를 재사용 가능한 모듈 식 '청크'로 세분화하려는 의도적 인 시도의 징후가 명확하게 구분되어 있습니까?
  • 마찬가지로 테스트의 증거-단위 테스트 또는 기타?
  • 프로덕션 코드 인 경우 개발과 배포 사이의 구분이 거의없는 디버그 문자열로 흩어져 있습니까?
  • 코드는 어떤 종류의 명명 규칙을 따르고 있습니까 (관례를 좋아하든 중요하지 않습니까!)?
  • 출력물이 아닌 파일이있는 경우 파일의 모든 함수 / 클래스가 파일과 관련이 있습니다 (따라서 data_access_layer 파일 인 경우 이미지를 처리하는 함수의 증거가 없을 수 있습니다).
  • 사용자 입력에 대한 신뢰가 부족하다는 징후, 특히 PHP와 같은 웹 기반 언어의 경우에도 좋습니다. 따라서 input = escape (input)과 같은 구조는 적어도 문제를 알고 있음을 보여줍니다.
  • 주석 또는 자체 설명 코드는 항상 좋습니다. 제시해야 할 의견의 양에 대해서는 여러 가지 생각의 학교가 있지만 의견이 완전히없는 경우
  • 냉소적 인 비용으로, 나는 또한 인터뷰 전에 일부 코드를 google로 만들 것입니다. 슬프게도 쉽게 복사하여 붙여 넣기 작업이 될 수 있습니다.

이 코드를 모두 가지고 있지 않은 코드는 자동으로 좋지 않다고 말하지는 않지만이 코드를 연습에 반영하고 고려한 사람의 지표라고 생각합니다.

그러나 이러한 모든 지표에 대해 코드의 이론적 근거가 무엇인지 물어보아야합니다. 언어별로 선택해야 할 좋은 이유가있을 수 있습니다. 그 후 Google은 친구와 다른 후보자가 떠날 때 친구입니다. 말한 내용이 그럴듯한 지 여부를 확인할 수 있습니다.

좋은 사람을 고용하는 것이 조직에서 가장 중요한 역할 중 하나이므로 행운을 빕니다.)


뒤늦은 견해에서 이것은 @Oded (및 의견)의 많은 내용을 복제합니다.
frackham

0

해당 언어를 아는 사람에게 인터뷰에 참석하거나 샘플을 보도록 요청해야합니다. 그런 사람은 더 나쁜 곳을 발견 할 것입니다.

후보자가 팀에서 일할 예정입니까? 팀원들이 그를 만나서 그의 기술에 대해 질문하게하십시오.


-2

언어를 사용할 때 겪었던 한계에 대해 물어보십시오. 간단한 SQL 쿼리를 보여달라고 요청하십시오. 그만한 가치가있는 Php 개발자라면 아무리 노력해도 기본적인 선택 / 업데이트 / 삭제 쿼리를 실행할 수 있어야합니다.

더그

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.