일관된 코딩 스타일이없는 동료를 다루십니까?


30

문체 적으로 나쁜 코드를 작성하는 사람과 함께 일할 때 무엇을하십니까? 내가 말하고있는 코드는 일반적으로 기술적으로 정확하고 합리적으로 구조화되어 있으며 알고리즘 적으로 우아 할 수도 있지만 추악하게 보입니다 . 우리는있어:

  • 다른 명명 규칙 타이틀 (혼합물 underscore_stylecamelCaseUpperCamelCAPS모두 동일한 기능으로 더 많거나 적은 임의의 다른 변수에 적용)
  • 기괴하고 일관되지 않은 간격 (예 : Functioncall (arg1 ,arg2,arg3 );
  • 주석 및 변수 이름에 철자가 틀린 단어가 많이 있음

우리는 내가 일하는 좋은 코드 검토 시스템을 가지고 있으므로 최악의 것을 살펴보고 고칠 수 있습니다. 그러나 "여기에 공백을 추가하십시오. '적정 자'철자를 정확하게 입력하십시오.

이 사람이 이런 종류의 세부 사항에 더욱주의를 기울이고 일관성을 갖도록 어떻게 격려 하시겠습니까?


2
"예쁜 프린터"도움말. 또한 회사에 스타일 가이드가 있습니까?
chrisaycock

1
문법이없는 동료는 어떻습니까? ;)
Muad'Dib

4
@ JSBangs : 사전 커밋 스타일 검사기를 설치하고 커밋을 거부하십시오. 그렇게하면 신속하게 올바르게 형식을 지정할 수 있습니다. 또는 사전 커밋 후크 가 포맷터를 실행 하도록합니다. 어떤 것들은 보일 것입니다. 그러나 그것은 이상한 것보다 낫습니다. "끔찍한 것"보다 낫습니다.
haylem

3
한 가지 더 생각-사소한 것처럼 보일 수 있지만 목적에 따라 사소한 것이 있습니다 (a) 코딩 표준이 있고 b) 다른 모든 사람들이 동의하고 준수한다고 가정합니다.
Murph

3
이 프로그래머의 배경은 무엇입니까? 너무 많은 다른 코드 형식 규칙을 사용하여 너무 많은 다른 회사에서 일한 것처럼 들리며, 그의 두뇌는 그것들을 뒤죽박죽으로 내면화했습니다. :-)
Carson63000

답변:


19

코딩 규칙에 동의

이것이 하나의 호출기 인 경우에도 마찬가지입니다. 팀 전체가 앉아서 팀 전체가 사용할 수있는 기본 작업 코딩 규칙에 동의하는 것이 좋습니다.


1
물론 a) 모든 사람이 동일한 표준을 달성하려고 노력하고 있으며 그 표준 이 무엇인지 알고 b) 코드 검토에서의 거부가 "코딩 표준 준수 실패"(적어도 전체 파일이 혼란-그것의 단지 하나 또는 두 가지를 구체적으로 해야하는 경우)
Murph

일반적으로 나는 한 언어로 어떤 언어에 대한 완전한 코딩 규칙에 대해 "동의"하는 팀을 본 적이 없습니다.) 그러나 동의한다면 "동의하지 않을 때까지 토론하고, 순위와 권한으로 부과"를 의미합니다. 공장. 컨센서스를 얻지 못하거나 팀에 매우 운이 좋기 때문에 발을 내려야합니다.
haylem

28

나는 당신이하고있는 일을 계속해야한다고 생각합니다. 명확한 코딩 지침이 있으며 코드 검토 중에 시행하십시오. 개발자가 무언가를 체크인하려고 할 때마다 "여기에 공백을 추가하십시오"및 "맞춤법 반복자 철자를 정확하게 입력하십시오"라는 50 또는 100 줄을 가져오고 실제로 모든 항목이 수정되기 전에 체크인 할 수없는 경우 번거 로움을 피하기 위해 더 깨끗한 코드 작성을 시작해야합니다.

당신이 NimChimpsky가 제안한 것처럼, 당신이이 것들을 스스로 고치면, 당신은이 사람을 영원히 청소할 것입니다.


5

변수 이름 철자 오류 및 서식은 중요하지 않다고 말한 모든 사람들에게 BS를 호출합니다. 분명히, 그들은 자신의 코드 만 읽었습니다. 그리고 그 단어를 바로 읽으십시오. 철자 오류가 많고, 엉망 진 형식, 불일치 한 줄 간격 및 많은 소스 코드에서 널리 퍼진 다양한 게으름이있는 책을 읽는다고 상상해보십시오. 지루할 것입니다.

구문이 작동하기에 100 % 정확해야하는 직업의 경우, 실제 개발자가 깨끗하고 일관된 코드 스타일을 갖지 않을 이유는 없습니다. 다른 것들은 매끈함과 게으름입니다. 나는 항상 구현에서 엉뚱한 형식의 코드의 정확성에 의문을 제기합니다.


4

우리는 내가 일하는 좋은 코드 검토 시스템을 가지고 있으므로 최악의 것을 살펴보고 고칠 수 있습니다. 그러나 "여기에 공백을 추가하십시오. '적정 자'철자를 올바르게 입력하십시오. 대문자를 바꾸는 등"으로 구성된 50 줄의 코드 검토를 보내는 것은 정말 소박합니다.

직접 변경 한 다음 코드에 정중 한 설명을 추가하십시오.

이것은 질문에 명시된 스타일 가이드가 이미 있다고 가정합니다.

우리는 좋은 코드 검토 시스템을 가지고 있습니다

그래서 제 제안은 최후의 수단입니다. 이메일이나 다른 것을 보내는 것만큼이나 빨리 자신을 바꾸고 의견을 남길 수 있다고 생각합니다.


10
꽤 빨리 늙어갑니다.
Robert Harvey

3
전자 메일을 보내는 것보다 빠를 수도 있고 문제를 해결하는 데 전체적으로 더 빠를 수도 있지만 처음에 문제가 발생하지 않는 것보다 느립니다.
haylem

4

나는 클래스와 변수의 이름 지정과 같은 규칙이 중요하고 우아하고 효율적인 코드도 따라야한다고 생각하지만 내 대답이 여러 번 다운 다운 될 위험이 있다고 일반적으로 "예쁜 코드"패러다임은 IMHO에 많은 사람들이 밀려났습니다.

우선, 그것을 작성한 개발자는 처음에 그것을 유지해야 할 것이며, 버스에 부딪 히고 다른 프로그래머가 코드가 "예쁘지 않기"때문에 어떻게 작동하는지 알 수 없다면 다른 개발자는 어쨌든별로 좋지 않습니다. 그리고 많은 자동화 된 포매터 / 뷰티 파이어가 있기 때문에 누구나 필요할 때 코드를 아름답게하는 데 사용할 수 있습니다. "흐름"/ "존"에있는 동안 시간을 ​​낭비하지 않아도됩니다.

여기서는 스파게티 / 카우보이 스타일의 코딩을 옹호하지 않습니다. 사실 매우 멋진 형식의 스파게티 코드 (4-5 화면에 걸친 함수 본문, 다른 소스 코드 파일에 흩어져있는 전역 변수, 일반적으로 잘못된 이름 선택)를 보았습니다. 등).


다음과 같은 코드에 대해 무엇을 말합니까 : stackoverflow.com/questions/6221098/save-mapview-as-a-bitmap/… 이 "스타일"을 다루는 프로그래머가 여전히 나쁜 프로그래머라고 생각하십니까? 그것에 심각한 문제가 있습니까?
WarrenFaith

@WarrenFaith, 당신은 나의 세번째 단락, 특히이 부분을 다시 방문하고 싶을 것입니다 : "여기서 나는 스파게티 / 카우보이 스타일 코딩을 옹호하지 않습니다 ..."
Jas

3

동료 중 한 명이 내 피부를 크롤링하는 방식으로 html을 작성합니다. 내 HTML이 멋지고 두 개의 공간 들여 쓰기로 구조화되었다고 상상해보십시오. 마지막 끝에 태그가 붙어있어 같은 줄에 끝나거나 옆에 서서 팔을 던져 서 있어야합니다. 새로운 줄은 거의 들여 쓰기가 거의 없지만, 그럴 경우 은하의 일부에 불완전한 온도 값을 뱉어내는 부분에 고도로 혼란스러운 블랙홀이있을 것입니다. 이 여자에 의해. 운이 좋으면 " </input>"로 닫힌 입력 태그가 표시 됩니다. 이해할 수있는 악몽.

아무도 이것을 여기에서 이해하지 못하는 것 같습니다. 여기서 가장 높은 곳에서 조직 된 코드 또는 구성되지 않은 코드를 보는 것은 샌드위치에 스위스 치즈 또는 미국 치즈를 넣는 것의 차이와 같습니다. 즉, 그들은 덜 걱정할 수 있습니다. 다른 프로젝트에 스트레스를 받았기 때문에 슬라이드를 시작하기 시작했으며 개선하기 전에 코드를 이해하는 것이 얼마나 어려운지를 깨닫기 시작했습니다. 내 조언은 단순히 코드를 작성하는 것보다 코드를 더 스타일링하는 것이 바람직한 이유 를 설명 하는 것입니다.


3

내가 말하는 코드는 일반적으로 기술적으로 정확하고 합리적으로 구조화되어 있으며 알고리즘 적으로 우아 할 수도 있습니다 ...

당신이 그 모든 것을 가지고 행복합니다. 대부분의 프로그래머는 아마도 그 목록의 첫 번째 것을 줄 것입니다. 변수 이름과 간격이 가장 중요하다고 생각합니다.


3
프로그래머는 코드를 작성하는 것보다 코드를 읽는 데 더 많은 시간을 소비합니다. 코드를 읽을 수 없으면 코드를 확장하거나 유지 관리하는 비용이 엄청납니다. 변수 이름이 일치하지 않거나 철자가 틀리거나 설명 적이 지 않으면 코드를 읽을 수 없습니다.
Dima

@Dima, 사실, 그러나 작동하고 우아한 코드는 깨지거나 우아하지 않은 코드보다 이미 읽기 쉽습니다.
jjnguy

1
내 요점은 변수 이름, 클래스 이름 또는 함수 이름을 볼 수 있어야하며 전체 코드베이스를 파지 않고도 변수를 사용하는 방법을 즉시 알아야한다는 것입니다. 또한 규칙에 따라 이름을 입력하고 조회하지 않고도 올바르게 입력 할 수 있어야합니다. Robert C. Martin의 "Clean Code"를 읽는 것이 좋습니다.
Dima

@Dima, 변수에 설명적인 이름이 있어야한다는 데 동의합니다. OP는 이름이 잘못되었다고 언급하지 않고 단지 일치하지 않는다고 언급합니다.
jjnguy

1
내 경험상 이름이 일치하지 않으면 설명이 아닌 경향이 있습니다. 그러나 또 다른 문제가 있습니다. 이름이 일치하지 않으면 이름이 무엇인지 기억하는 데 시간이 더 오래 걸리고 이름을 찾는 데 시간을 소비해야합니다. 좋은 IDE는 다소 도움이 될 수 있지만 문제를 완전히 해결하지는 못합니다. 프로그래밍은 이미 뇌에 충분한 부하를 주므로 가능한 한 정신 매핑 및 이중 검사의 양을 줄이려고합니다.
Dima

2

스타일 규칙을 설정하고 동의해야하는 것처럼 들립니다. 그렇지 않으면 3 개의 들여 쓰기가있는 라이브러리가 있고 다른 라이브러리에는 4 개의 라이브러리가 있고 다른 라이브러리에는 Camel Case를 사용하고 다른 라이브러리는 underscore_case를 사용합니다.


2

변경 사항이 개인 취향을 따르고 있습니까 아니면 실제 준수해야 할 표준이 있습니까? 실제 표준이 없으면이 작업을 수행하지 마십시오. 먼저 표준을 설정하십시오. 그런 다음 코드를 standadrd 설정으로 리팩토링하도록 설정할 수있는 소프트웨어를 얻을 수 있습니다 (적어도 몇 가지).

표준이있는 경우 코드 검토에서 표준을 시행하십시오. 코드 검토에서 표준을 시행하지 않으면 표준을 가질 필요가 없습니다. 이것은 사람들이 표준을 만질 때 표준에 맞지 않는 오래된 코드를 수정해야하기 때문에 유지 보수에 많은 추가 작업이 필요하다는 것을 의미합니다.

표준이 없어도 변수 이름의 철자를 잘못 고쳐야합니다 (특히 주석에 대해서는 걱정하지 않아도됩니다). 코드를 만지는 모든 사람을 영원히 미치게 할 것입니다.


2

코딩 표준을 식별하여 모든 사람들이 자신이 무엇인지 알고 시행해야합니다. 규칙을 따르지 않으면 결과가 발생해야합니다.

인센티브를 제공해야 할 사항은 다음과 같습니다.

  1. 코드 검토는 지루하고 필요 이상으로 길어질 것입니다.
  2. 코드가 더 자주 거부됩니다.
  3. 일정이 충족되지 않습니다.

이 사람이 당신의 규칙을 시행하지 않거나 비생산적인 지에 대해 신경 쓰지 않기 때문에 (이것에 대해 걱정할 필요가 없다면) 아무도 당신이 할 수있는 일은 없습니다.


2

비공개 채팅을 제안하고 두 사람 모두 근본 원인을 찾을 수 있는지 확인하고 싶습니다.

  1. 동료가 서두르고 있으며 누군가 어제 코드를 원했기 때문에 가능한 빨리 작업을 시도하고 있습니까? 이것은이 사람에게 작업 속도보다 품질에 더 중점을 두도록 할 수있는 기회가 될 수 있습니다. "시간을 내십시오"와 같은 진언은 이것이 비생산적이라면 유용 할 수 있습니다.

  2. 그 사람은 자신의 일을 어떻게 여깁니까? 자부심이 있다면 개선을 얻는 데 사용할 각도가있을 수 있습니다. 청구서를 지불하는 것이 직업이라면 변경하기가 훨씬 어려울 수 있습니다. 그들은 그들이 훌륭한 일을하고 있지는 않지만 너무 가까이 있다는 것을 알고 있습니까?

  3. 이 사람은 협약에 동의하지 않고 항의 코드를 작성하려고합니까? 그렇다면 큰 문제가있을 수 있지만 이것이 사실인지 아니면 사람이 게으른 지 알아낼 가치가 있습니까? 여기에서 어떤 종류의 동기가 도움이 될 수 있습니까? 멋진 남자 루트를 시도해 보면 아무데도 못 가면 몰래 몰리지 만 효과적 일 수 있습니다.

  4. 친구와 영향력을 얻는 방법 사람들 은 개선을 칭찬하고 그 사람에게 훌륭한 평판을주는 것과 같이 설득력이 있다는 점에서 몇 가지 제안을합니다.

이것이 개인적으로 수행되어야하는 이유는 다음과 같습니다.

  1. 누군가가 자신의 성격이 암살당하는 느낌이들 수있는 열린 공간에 남겨 두는 것보다 문 뒤에 숨어있는 것이 더 나은 굴욕, 비판 또는 기타 불쾌감을 줄 수있는 좋은 기회가 있습니다.

  2. 이 다른 사람이 조금만 열도록 격려하고 싶습니다. 여기서 어떤 문제는 너무 조심해서 벽을 무너 뜨리는 데 시간이 오래 걸릴 수 있다는 것입니다.

  3. 가능하다면 사무실에서 조금 멀리 떨어져있는 것이 좋습니다. 점심을 먹거나, 산책을하거나, 무언가가 사람이 좀 더 편안하게 느낄 수 있도록 주변 환경이 바뀌도록 무언가를하십시오. 이것은 도전이 될 수 있고 그 사람을 알아야합니다. 그러나 여기서 아이디어는 사무실에서 일부 사람들은 여기서 도움이되지 않는 작업 마스크를 착용한다는 것입니다.

  4. 대화가 더워 지거나 추악 해 지도록 준비하십시오. 그러나 상대방을 계속 참여시키고 대화를 잘 할 수 있다면 이것은 좋은 징조가 될 수 있습니다. 어떤 사람들은 열린 것을 열어두고 다른 사람들은 더 미묘한 방법으로 일을 끝내는 것을 선호 할 수 있습니다. 열쇠는 상대방을 공감하고 그들의 편을 이해하려고 노력할만큼 충분히 상대방의 말을 듣고 있는지 확인하는 것입니다.



1

unscrutify 와 같은 코드 미화는 일부 문제를 해결할 수 있습니다. 이를 지불 할 준비가 되었다면 Parasoft 와 같은 소스 코드 자체에 규칙을 포함시키는 고급 소프트웨어가 있습니다 . Parasoft는 코드를 균일 한 스타일로 작성해야합니다. 자신 만의 규칙도 포함 할 수 있습니다. 이러한 도구를 사용하면 개발자는 균일 한 스타일을 사용해야합니다. 그리고 얼마 후 그들은 익숙해 질 것입니다.


1

Eclipse를 사용하는 경우 Java 편집기에 대한 조치 저장을 사용 가능하게하고 모든 사용자에게이를 사용하도록 지시하십시오. 이렇게하면 모든 저장시 서식 문제가 해결되지만 대소 문자가 수정되지는 않습니다. 그래도 도움이 될 수 있습니다!

대체 텍스트


1

스타일 규칙을 따르는 것이 얼마나 어려운가요? 철자 오류를 이해하지만 나머지는 조잡한 사고와 코딩의 지표입니다. 프로덕션 코드에 관해서는 그들이 볼 유일한 코드가 아니기 때문에 일관성이 필요하다고 말하십시오. 일관성없는 스타일로 제작 코드를 작성하는 것은 무례하고 이기적이며 무시할만한 일입니다.


0

LOL. 당신은 절대적으로 내 코드를 싫어할 것입니다. 나는 내 생명을 구하기 위해 철자를 쓸 수 없으며 상관하지 않습니다.

그러나 나는 어떤 사람들이 실제로 그런 것들에 관심이 있다는 것을 알고 있습니다.

변경하지 않으면 못생긴 코드를 작성하는 사람을 해고하고 정말 아름답게 만드는 사람을 찾아서 코드를 작성할 수 있기를 바랍니다.

일반적으로 기술적으로 정확하고 합리적으로 구성되며 알고리즘 적으로 우아 할 수도 있습니다.

그리고 그들이 그렇게 할 수 없다면 적어도 당신은 깨진 예쁜 코드를 고객에게 보여주고 그것을 팔 수 있습니다!

그러나 진지하게. 실제로 중요한 것들에 먼저 초점을 맞추십시오. 당신이 "나의 섬세한 감성을 상하게한다"밖에 좋은, 확실한 이유를 찾을 수 없다면, 지금 그것을 무시하십시오. 그것이 실제로 중요하다면, 그 사람과 함께 앉아서 그 중요성을 확신 시키십시오. 클래스 레벨, 메소드 레벨, 공유, 상수 변수의 차이를 쉽게 구별 할 수있는 표준과 같은 것들이 차이를 만듭니다. 문제의 코더가 자신의 직업에 전혀 관심이 있다면 올바른 일을 이해하고 시도 할 것입니다.


5
변수 이름의 철자가 틀리면 코드를 사용하는 다음 사람이 철자를 잘못 입력 할 때 컴파일러 오류를 수정하는 데 추가 시간을 소비해야합니다. 이것은 "민감성 전달"에 관한 것이 아닙니다. 이처럼 사소한 것들은 오류를 일으켜 좌절을 일으켜 더 많은 오류를 일으 킵니다. 이로 인해 코드 유지 관리 비용이 크게 증가합니다.
Dima

4
그것은 "감각을 전달하는 것"이상의 것이지만 생산성 약간 다른 코딩 스타일을 가진 사람, 때로는 공간을 잊어 버리는 등은 신경 쓰지 않습니다. 우리는 완벽하지 않습니다. 그러나 전체 파일이 불일치 한 줄 간격, 위치, 들여 쓰기 및 일반적인 코드 흐름으로 언더 그레이드에 의해 작성된 것처럼 보이면 "거부"(또는 되돌리기) 버튼을 매우 빠르게 누르게됩니다.
haylem

2
성공적인 오픈 소스 프로젝트 (리눅스 포함)가 많이 있습니다. 올바른 스타일 (및 단위 테스트)이 없으면 거부됩니다. 그것이 좋았고 실제 문제를 해결했다면 너무 나빠요. 항상 다른 사람들의 코드를 고칠 수는 없습니다. 전반적으로, 당신은 지나간 천재를 지나가지만 지옥처럼 보이거나 유지할 수없는 시간과 돈을 덜 잃게됩니다.
haylem

1
재밌는 것들. 물론 요점을 놓친 것 같습니다. 당신은 먼저 당신이 실제로 강력한 사례를 만들 수있는 명백한 것들로 그 사람을 승선시킵니다. 그런 다음 덜 중요한 일을합니다. 규칙으로 질식하는 것 이외의 사람들과 함께 일하는 방법이 있습니다. 아마도 어쩌면 OCD 군중이 약간 타협하거나 다른 코드에 왜 그렇게 많은지 배울 수 있습니다. 실제로 원인이나 이유가있을 수 있습니다.
ElGringoGrande

0

서식에 대해 & % $ #을 제공하지 않은 아웃소싱 된 리소스를 처리 할 때 (또는 그 문제에 대해 쉽게 예방할 수있는 버그) 내 솔루션은 빌드 서버에서이를 강제하는 것입니다. 매일 밤마다 코드를 확인하고 Jalopy와 findbugs를 실행 한 다음 다시 코드를 체크인하는 CI 서버 작업을 만들었습니다. 다른 팀이 표준 코드 규칙을 사용하지 않으면 작업이 더 어려워 질 것임을 알게되었습니다. 표준 형식을 유지하기위한 IDE.

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