사용중인 코드가 오래된 코딩 스타일을 사용하기 때문에 프로그래밍 할 수 없습니다. 프로그래머에게 이것이 정상입니까?


29

프로그래머로서의 첫 번째 직업이 있지만 사용 된 코딩 스타일로 인해 어떤 문제도 해결할 수 없습니다. 코드는 다음과 같습니다.

  • 의견이 없습니다
  • 기능이 없습니다 (50, 100, 200, 300 개 이상의 라인이 순서대로 실행 됨)
  • if경로가 많은 문장을 많이 사용
  • 아무 의미가없는 변수가 (예 : cf_cfop, CF_Natop, lnom, r_procod)
  • 이전 언어 (2002의 Visual FoxPro 8)를 사용하지만 2007의 새로운 릴리스가 있습니다.

1970 년으로 돌아가는 느낌이 듭니다. OOP, 클린 코드, 디자인 패턴 등에 익숙한 프로그래머가이 구식 방식으로 코딩하는 데 문제가있는 것은 정상입니까?

편집 : 모든 답변이 매우 좋습니다. 제 희망은 전 세계에 이런 종류의 코드 기반이 많이있는 것 같습니다. 모든 답변에 언급 된 요점은 코드를 리팩터링하는 것입니다. 네, 정말 좋아합니다. 내 개인 프로젝트에서는 항상 이렇게하지만 ... 코드를 리팩터링 할 수 없습니다. 프로그래머는 자신이 디자인 한 작업에서만 파일을 변경할 수 있습니다.

이전 코드의 모든 변경 사항은 코드에 Subversion을 사용하여 코드에 주석을 달고 해당 변경과 관련된 메타 정보 (날짜, 프로그래머, 작업)를 추가해야합니다. 오래된 줄이 주석 처리됨). 코드 문제 일뿐만 아니라 소프트웨어 개발 문제 관리라고 생각합니다.


43
예, 물론 정상입니다. 당신은 특정한 방식으로 일하도록 훈련을 받았으며, 다른 방법으로 구현 된 코드베이스에 직면 할 때 대부분의 훈련은 쓸모가 없습니다. 핵심 원칙은 그다지 바뀌지 않았다고 말했고, 최초의 충격 후에는 조정을 시작할 것입니다.
yannis

12
당신은 코멘트를 사용하여 많이 그리워하지 않습니다. 사람들이 남용하는 것이 있다면.
JohnFx

22
@JohnFx 의견에 동의하지 않지만 의견이없는 레거시 쓰레기를 거의 겪지 않은 사람은 의견이 전혀없는 것보다 중복되거나 쓸모없는 의견을 선호한다고 말하고 싶습니다.
yannis

25
이것은 악한 것처럼 보일 것입니다-그러나 당신이 경력 초기에 이런 종류의 고통을 느끼게되어 기쁩니다. 유지하는 종류와 같은 코드를 작성하지 않는 것이 큰 동기가 될 것입니다.
Bork Blatt

19
프로그래머로서 개발할 수있는 가장 중요한 기술 중 하나는 다른 사람들의 코드를 이해하고 리팩토링하는 것입니다. 당신이 그것을 마스터하지 않으면, 당신은 좋은 프로그래머가 될 수 없습니다. 실력을 배울 수있는 기회가 주어졌다.
Paul Tomblin

답변:


0

좋아, 나는 무딘거야. 그것은 일하기에 나쁜 곳입니다 ... 나는 그런 상황에 처해 있었고 보통이 코드로 삼키는 것으로 끝납니다. 1 년 정도 지나면 익숙해지며, 현대적인 대안을 사용하여 동일한 작업을보다 쉽고 유지 보수가 용이 한 방식으로 수행하고 런타임에 더 빠르게 수행 할 수있는 방법에 대한 이해를 잃게됩니다. 대부분의 경우.

한 달 만에 오래된 스쿨 코드로 끌려가는 느낌이 들기 때문에 직장을 그만 두었습니다. 나는 그것을 시도했지만,하지 않기로 결정했다. 나는 깨끗한 코드를 사용할 수 없었고 실습이 없어서 실력을 잃기 시작했다. 모든 현대적인 접근 방식은 3 가지 계층의 개발자에 의해 승인되어야했지만, 결코 발생하지 않았습니다. 현대적인 접근 방식을 사용할 때 문제가 발생할 수 있기 때문입니다. 그리고 현대적인 접근 방식을 사용하지 않을 때 나오는 코드의 취약성은 매우 무섭습니다.

잘못 이해하지 마십시오. 사람들이 솔루션을 과도하게 엔지니어링하는 경우가 있습니다. 그러나 80 년 동안의 코딩 규칙과 스타일로 끌려 가면 진로가 멈추고 경력 기회도 사라질 것입니다.

그런 다음 다시 돈을 벌어야하므로 때로는 마음에 들지 않는 일을해야 할 때가 있습니다. 그런 경우 번 아웃 증상을 주시하고 코딩을 일상적인 작업으로 바꾸십시오.


1
직장이 좋지 않다고 어떻게 말할 수 있습니까? 레거시 인라인 코드에는 아무런 문제가 없습니다. 레거시 코드는이 세상에서 레거시 코드없이 자리 잡고 있으며 매일 사용하는 응용 프로그램에 새로운 익스플로잇이 있습니다.
Ramhound

1
@Ramhound : 그런 곳에서 직접 경험 한 적이 있기 때문입니다. 효과적인 컨테이너를 사용할 수 없으며 안전한 구조를 사용할 수 없으며 아키텍처에 대한 입력이 없습니다. 변화의 두려움이 주된 이유입니다. 그리고 1 년 이상 그러한 장소에 머무르면 끌려갑니다. 최신 코드로 설계가 더 단순하고 빠르며 안전합니다! 나는 장소에 원시 메모리 twiddling, 즉석 SQL 쿼리 구성, 매개 변수화되지 않은 등이 가득하다고 확신합니다.
Coder

1
@Ramhound 레거시 코드는 괜찮습니다. 오늘날 레거시 코드를 작성하는 것은 좋지 않습니다.
Renato Dinhani 2016 년

@ 코더, 이것은 직업에 대한 완벽한 설명이었습니다. 당신처럼, 나는 한 달과 며칠 후에 직장을 떠났습니다. 내가 한 최선의 일, 그리고 지금, 여가 시간에는 많은 유용한 것들을 배우고 있습니다.
Renato Dinhani 2016 년

6 년 후 업데이트 :이 질문을 게시하고 되돌아 본 후 며칠 동안 회사를 떠났습니다. 이것이 제가 결정한 가장 좋은 결정이었습니다. 나는 다른 회사의 다른 많은 프로젝트에서 일할 기회가 있었으며 그 중 어느 것도 그 첫 번째 직업에서 찾은 것과 같은 나쁜 관행이나 품질이 없었습니다. 취업 시장의 현재 상태를 배우면서 집에 머물면서 더 흥미로운 프로젝트와 더 나은 회사에서 일할 수있었습니다.
Renato Dinhani 2016 년

35

이 코딩 스타일 ( 어떤 종류의 스타일 이라고하더라도 )은 잘못된 코딩 스타일입니다.

대부분의 현대 언어에서 설명 가능한 변수 이름과 적절한 흐름 제어를 사용하여 짧은 함수를 작성할 수 있습니다 (Visual FoxPro는 현대적입니다).

당신이 겪고있는 문제는 나쁜 코드베이스, 더 이상 아무것도 아닙니다.

그러한 코드베이스는 존재하며 많은 수입니다-당신이 그들에게 문제가 있다는 사실은 그들이 얼마나 나쁜지 증명하고 (그리고 당신은 좋은 훈련을 받고 있음) 증명합니다.

변수 이름 바꾸기, 공통점 추출 및 큰 함수를 더 작은 함수로 나누는 등의 작업을 수행하는 것이 좋습니다 .

나는 당신이 묘사 한 것에서 멀지 않은 매우 나쁜 구조의 C # 프로젝트에 있습니다. 12 개의 개별 기능 (명확한 복사-붙여 넣기)을 단일 매개 변수를 사용 하는 기능으로 결합했습니다 .


33
훌륭한 프로그래머는 모든 종류의 공포 이야기를 다룰 수 있습니다. 재미 있지는 않지만 그렇게하기 위해 돈을 지불하는 이유입니다. 일은 재미 있고 게임적인 것이 아닙니다.
tp1

9
@ tp1-그렇습니다. 그러나 처음 접하는 그러한 코드베이스가 시스템에 상당히 충격을 줄 수 있음을 인정해야합니다.
Oded

10
@Renato : 모든 프로그래머는 새로운 코드를 작성 / 디자인하는 것보다 훨씬 더 많은 코드를 유지 관리합니다. 그리고 끊임없이 수정되는 모든 코드는 많은 노력을 기울이지 않으면 시간이 지남에 따라 악화됩니다. 좋은 프로그래머는 나쁜 코드베이스를 다루는 것이 좋든 싫든 상관없이 관리자는 종종 그러한 작업을 수행하고 그러한 작업을 완전히 피할 수있는 위치에있는 사람은 거의 없습니다. 나는 실제로 프로그래머가 나쁜 코드 (그의 코드 일 수 있음)를 다루는 경험이 없으면 정말로 훌륭하다고 주장 할 수 없다고 주장합니다.
Michael Borgwardt

13
@ RenatoDinhaniConceição, 나는 유지 보수에서 자신의 시간을 겪지 않은 독창적 인 디자인을 개발자에게 고용하는 것을 결코 고려하지 않을 것입니다. 내 경험). 당신은 좋은 프로그래머가 될 수 없으며 유지 보수에 나쁘다. 당신은 그것을 좋아하지 않을 수도 있지만, 잘 디자인하는 방법을 이해해야합니다. 그리고 어려운 서버 작업을하는 능력은 훌륭한 프로그래머의 특징이기도합니다. 쉬웠다면 그들은 우리를 필요로하지 않을 것입니다.
HLGEM

8
@ tp1 Work는 재미 있고 게임이어야하는데 그렇지 않으면 잘못하고 있습니다.
Kevin McCormick

18

(현재) 훌륭한 디자인 관행이 항상 인기있는 것은 아니라는 점을 제외하면 실제로는 "구식"이 아닙니다. 그건 나쁜 코드입니다. 잘못된 코드는 모든 사람을 느리게합니다. 결국 익숙해 지지만 이는 특정 시스템의 특정 문제에 익숙해 져 있기 때문입니다. 새로운 프로젝트가 주어지면 잘못된 코드를 작성하는 완전히 새로운 방법을 찾을 수 있습니다 . 좋은 점은 이러한 코드 냄새를 식별하는 방법을 이미 알고 있다는 것입니다.

당신이 할 수있는 가장 큰 일은 문제를 전파하지 않는 것입니다 . 팀이 아닌 한 이러한 나쁜 관행을 컨벤션으로 사용하지 마십시오. 리팩터링을 강요하지 않는 방식으로 새 코드를 깨끗하게 유지하십시오. 그것이 나쁘고 시간이 있다면 주요 리 팩터를 고려하십시오 ... 그러나 실제로 그 사치가 거의 없습니다.

사물을 파악할 때 주석을 추가하고 약간의 비트와 조각을 실용적으로 변경하십시오. 혼자서 코딩하지 않는 한, 팀과 함께이 문제를 해결해야합니다. 규칙이 없다면 규칙을 마련하는 데 약간의 시간이 걸리고 정기적으로 코드베이스를 유지 관리하는 경우 천천히 코드베이스를 개선하기 위해 노력해야합니다.

변수 이름이 잘못된 완전히 고립 된 함수를 발견하고 고치면 변수 이름을 유용한 것으로 만들면 if를 리팩터링 할 수 있습니다. 많은 부분을 리팩토링하지 않는 한 일반적인 기능을 변경하지 마십시오.


4
"좋은 디자인 관행이 항상 인기있는 것은 아니 었습니다"반드시 인기에 관한 것은 아닙니다. 좋은 디자인 또는 모범 사례로 간주되는 것은 시간이 지남에 따라 진화합니다. 오래된 코드를 볼 때 명심해야 할 것입니다.
Burhan Ali

@BurhanAli, abosiolutely, 우리의 응용 프로그램이 원래 디자인되었을 때 2000 년에 좋은 관행은 지금 반드시 좋은 관행은 아닙니다. 어린 개발자들은 종종 코드를 작성할 당시 모범 사례로 배운 내용이 존재하지 않았거나 소프트웨어가 사용하는 이전 언어와 작동하지 않을 수도 있다는 사실을 모릅니다.
HLGEM

2
나는 500 줄 함수가 "좋은"것으로 여겨지지 않았다고 생각한다. 80 년대에 어셈블리를 배운 주요 책은 끝에서 분기하기에 너무 커지기 시작했을 때 서브 루틴으로 나눌 수 있다고 언급했다. 처음에. 이는 해당 프로세서 (6502)의 40-120 라인 사이에 있습니다.
mjfgates

11
  • 의견이 없습니다- 배우면서 수정하십시오
  • 기능이없는 경우 (50, 100, 200, 300 개 이상의 라인이 순서대로 실행 됨)

이것은 아마도 이전 코드 반복에서 나온 것입니다. 이 시점에서 필자는 "기능"이 된 유사한 코드 블록 간의 미묘한 차이점에주의해야합니다. 그러나이 유형의 구조가 얼마나 나쁜 아이디어인지에 관계없이 이해하는 것은 매우 간단합니다 ... 그래서 어디서 문제가 생길지 잘 모르겠습니다.

  • 경로가 많은 if 문을 많이 사용합니다. 여기서 당신이 의미하는 바가 확실하지 않습니다.
  • 의미가없는 변수가있는 경우 (예 : cf_cfop, CF_Natop, lnom, r_procod)-

나는 '이름 바꾸기 변수'비트에주의를 강조합니다. 아직 링고를 이해하지 못할 가능성이 상당히 높으며, 변수 이름은 잠시 동안 방문한 후에 훨씬 더 의미가 있습니다. 말할 것도없이 문제가있는 변수 이름도있을 수는 없지만, 사이트의 일반적인 약어가 무엇인지 알고 있다면 예제에 논리가있는 것처럼 보입니다. 당신이 1의 팀이라면 이것은 중요하지 않습니다.

  • 익숙하지 않은 언어를 사용합니다 (2002 년의 Visual FoxPro 8). 이것은 코드가 아닌 문제입니다.

7
+1 : 이것은 코드의 문제가 아니라 문제입니다. :)
aleroot

그의 마지막 요점은 문법적으로 틀렸다. 나는 그의 원래 의미를 이해할 수 없었다. 나는 추측했고 잘못 추측했을 수도 있으므로 Visual FoxPro에 익숙하지 않다는 것을 의미하지는 않았을 것입니다.
Myrddin Emrys

FoxPro에 대해서는 제 질문이 편집되었습니다. 나는 그것이 장황한 언어라고 말했고, 나에게는 이것이 좋지 않지만 개인적인 견해입니다. 나는 그것을 이해하지만 마음에 들지 않으며 요점은 언어의 시대입니다. 회사에서 업데이트되지 않았지만 새로운 릴리스 (2007의 Visual FoxPro 9)가 있습니다.
Renato Dinhani

3
@ RenatoDinhaniConceição, 업그레이드로 인해 현재 작동하는 작업이 중단되고 이전 버전을 유지 관리하는 데 필요하지 않은 변경 작업에 소비 할 비용이나 시간이 없기 때문에 데이터베이스 제품을 업그레이드하지 않는 것이 일반적입니다. 이것은 비즈니스 선택입니다.
HLGEM

1
@renato, 대부분의 데이터베이스 응용 프로그램은 이전 버전과 쉽게 호환되지 않습니다.
HLGEM

11

이것은 기회 처럼 들린다 .

일이 수행되고 관리되는 방식에 많은 문제가 이미 있음을 분명히 알 수 있습니다. 당신은 그것이 모두 쓰레기이고 당신이 아무것도 할 수 없다고 불평하거나, 또는 이것을 고용주에게 당신의 가치를 보여줄 수있는 황금의 기회로 사용할 수 있습니다.

이제 고용주에게 행진하고 모든 것이 바뀌어야한다고 말하면 도움이되지 않습니다. 따라서 트릭은 잠시 동안 놀고, 많은 질문을하고, 코드를 작성해야 할 때 다른 개발자를 유지해야하므로 모든 주석 등의 규칙으로 재생해야합니다. 현재 선호하는 시스템을 사용하여 정보를 제공하는 동시에 위험을 감수하지 않는 합리적인 리팩토링을 도입 할 수 있습니다. 몇 가지 방법을 추출 할 수 있으며, 언어가 지원하는 경우 몇 가지 단위 테스트를 도입하십시오. 왜 이런 식으로했는지 물어 보거나 "잘못 된"무언가를하고 있다고 말하면 선호하는 코딩 스타일에 대한 입장을 건전하게 표현하면서 방어 적이거나 논쟁적인 태도를 취하지 마십시오. 예를 들어 Bob Martin의 Clean Code와 같은 책을 참조하거나 Programmers.SE에서 접한 다른 책, 기사 또는 질문과 답변을 참조 할 수 있습니다. 함께 일하는 사람들의 눈에는 경험을 넘어서는 사실을 통해 자신의 입장을 뒷받침하는 데 도움이 될 수있는 모든 것.

과도한 주석 처리와 관련하여 변수 및 메소드에 대한 설명적인 이름을 몇 개 추가하면이 중 일부를 정리할 수 있지만, 버전 관리 시스템이 좋은 경우에도이를 사용할 수 있습니다. 변경 사항 및 날짜 등을 기록하고 선택한 VCS와 함께 제공되지 않은 소스 파일의 다른 버전을 비교하는 도구를 사용합니다.

내가 말했듯이, 이것은 개발 팀의 개선에 기여할 수있는 기회입니다. 당신은 숙련되고 지식이 풍부하고 모범을 보여줄 수있는 사람으로 눈에 띄는 기회를 갖습니다. 이것들은 모두 경력이 발전함에 따라 나중에 당신을 도울 좋은 것입니다.


2
첫째, 여기에있는 모든 대답은 훌륭하고 나를 도왔습니다. 이 답변은 투표율이 높거나 논평되지 않았지만 정말 마음에 듭니다. 많은 질문을하고 방어를하지 않는 것이 매우 중요하다고 생각합니다. 나는 여기에 언급 한 몇 가지 점에 대해 상사와 이야기했으며 예상대로 큰 변화를 할 힘이 없지만 그 후에 조금 더 나아질 것이라고 생각합니다. 현명한 말을 해준 S. Robbins와 다른 사람들에게 감사합니다.
Renato Dinhani

1
글쎄, 나는 한 번 해냈고 성공했다. 지치고 있습니다. 나는 다시는 그렇게하지 않을 것이다. 이것은 정말 어렵습니다. 리팩토링하기 전에 단위 테스트를 할 수 없으며 코드가 약하므로 언제든지 얼굴에 폭발 할 가능성이 있으며 사람들의 작업 습관 (다른 문제 중에서)으로 인해 매우 중요한 저항에 직면하게됩니다. 코드 품질에 관심이있는 사람들에게만 효과가 있다는 것을 알고 있습니다.
deadalnix

1
@deadalnix 첫 번째 직업은 당신이 일하는 사람들을 선택할 기회를 거의 제공하지 않습니다. 종종 코드 작업에 참여하기 전까지는 사람들이 코드 품질에 얼마나 신경을 쓰는지 알지 못하는 경우가 많습니다. 내 답변은 OP가이를 이해하는 데 도움이됩니다. 리팩토링 전에 단위 테스트를 수행 할 수 없다는 내용은 특허 적으로 잘못되었습니다. 단위 테스트 전에 리팩토링을 시도하면 전반적인 위험이 증가합니다. 테스트없이 버그를 추적하는 것은 비효율적이며 소진됩니다. 코드 품질에 관심이있는 사람들은 테스트 및 깨끗한 코딩 기술에 중점을 둡니다. 나는 당신의 암시 적 이의를 얻지 못하고,이 오프라인에 대해 이야기하게되어 기쁘다 :-)
S.Robins

@ S.Robins 테스트없이 버그를 추적하는 것은 비효율적이며 단위 테스트없이 소진 및 리팩토링은 매우 위험합니다 (둘 다 훌륭하게 결합). 이것이 바로 그러한 상황이 악몽 인 이유입니다. 대규모 레거시 코드베이스는 일반적으로 단위 테스트가 불가능합니다 (전 세계 상태, 프로덕션 시스템 또는 다른 시스템에 대한 하드 코딩 된 종속성, 우려 분리, 대규모 코드 반복 등). 코드를 테스트 할 수있게하려면 첫 번째 리팩토링 패스를 사용해야합니다. 나는 우리가 문제의 코딩 측면에 동의하지만 서로 오해한다고 생각합니다.
deadalnix

1
또한 콘텐츠를 수집 할 수있는 기회 thedailywtf.com
Arkh

8

정글에 오신 걸 환영합니다 !

불행히도 종종 회사에서 일하기 시작한다는 것은 구조화되고 잘 조직 된 회사에서 일하지 않는 한 이러한 상황에 직면하기 시작한다는 것을 의미합니다.이 상황은 매우 일반적입니다 ...

내 조언은 :

  1. 학습 시작 및 익숙해지기 : 사용되는 프로그래밍 언어 (Clipper / dBase) 및 환경 (Visual FoxPro)

  2. 코드베이스를 읽고 분석 한 후 주석을 달기 시작

  3. 코드 구성 / 리팩토링 (순서대로 실행 된 너무 많은 행의 문제 해결)

비슷한 코드베이스에 직면하는 데 문제가있는 것은 정상이지만 코드 품질을 개선하고 프로그램에 "터치"를 제공하여 코드베이스를 개선하고 더 나은 프로그램을 만드는 데 큰 어려움이 될 수 있습니다 ...


7

귀하의 질문에 대답하기 위해 : 그렇습니다. 모든 사람 / 회사는 엉터리 코드를 기반으로 구축 된 인프라를 사용합니다. 그런 상황에 처하게되면 다루기가 매우 어려울 수 있습니다.

지난 여름, 특정 부서에 연결된 QA 팀이 사용할 응용 프로그램을 개발하는 인턴으로 일했습니다. QA 팀은 많은 독립형 스크립트 (VBScript, Perl, Bash)를 사용하여 데이터베이스 등에서 테스트를 실행했으며이를 하나의 애플리케이션으로 통합하려고했습니다. 그러나 문제는 스크립트가 회사의 다른 곳에서 사용 되었기 때문에 (핵심 기능 / 변수 이름을 변경할 수 없음) 코드는 거의 10 년 동안 "추가되었습니다". 많은 쓰레기가 쌓였습니다.

그래도 당신이 할 수있는 일은 다음과 같습니다.

  1. 도움을 요청하십시오.이 코드를 살펴보아야했던 동료 동료들은 아마도 그 특질에 익숙 할 것입니다. 당신에게 둔하고 혼란스러운 것은 그들에게 완벽합니다. 도움을 요청하십시오!
  2. 가능할 때마다 리팩토링 :이 코드를 장기간 보거나 유지해야하는 경우 가능하면 리팩토링하십시오. 변수 이름에서 찾기 및 바꾸기를 실행하더라도 약간의 도움이됩니다. 지난 여름에 제가 인턴 한 회사는 crappy 변수 이름을 사용하는 것과 비슷한 문제가있었습니다. 기회를 가질 때마다 미세한 빗, 변수 이름 변경, 논리 최적화 (예 : 다양한 기능을 1로 그룹화) 등을 통해 코드를 실행할 수있었습니다. 기회가있을 때마다 똑같이하십시오!

어디에서나 코드의 외부 기능이 제대로 작동하는 한 내부의 작동 방식은 중요하지 않습니다.


"도움을 요청"에 +1 팀에서 일하면 비용이 추가되지만 혜택도 제공됩니다.

7

나는 여기에 많은 응답자들과 다른 몇 가지 의견을 제시 할 것입니다. 내 의견 중 많은 부분이 당신에게 명백 할 수도 있지만 어쨌든 말해야합니다.

  • 이해하기 전까지는 이해하지 못하는 코드 변경에주의하십시오.
  • 팀 환경에서 팀원이 작업하는 코드를 사용하여 작업중인 경우 변경하기 전에 변경 사항에 대해 논의하십시오. 아무도 "고독한 총잡이"를 좋아하고 다른 사람들이 익숙한 코드를 변경하는 것을 좋아하지 않습니다. 이것은 귀하의 변경이 보증되지 않거나 "올바른"행동을 의미하지는 않습니다.
  • 아이디어를 채택하십시오. 모든 사람이 당신의 아이디어로 승선하면 팀 전체의 업무량에 부담을주지 않고 팀의 기술을 리팩토링 할 수 있습니다.
  • 경영진 인수를 확보하십시오. 그들은 당신이 가서 코드를 리팩터링하기 위해 자금을 할당 할 수 있습니다.
  • 코드베이스 리팩토링의 이점에 대해 이해하는 관점에서 경영진과 대화하십시오. 유지 관리가 쉬운 코드는 버그를 해결하고 기능을 추가하는 데 소요되는 시간이 줄어든다는 것을 의미합니다. 이는 비용 효율적인 개발을 의미합니다. 빠른 처리 시간 등

환경의 정치를 이해하지 않고 순수 코딩, 모범 사례 제안을 쉽게 추가 할 수 있습니다. 함께 일하는 사람들은 코드베이스를 변경하거나 변경하려는 시간을 할당하고 싶지 않을 수 있지만 모든 것을 뛰어 넘기고 변경하기 전에 모든 사람에게 아이디어를 판매하려고 시도 할 수 있습니다.

이것이 도움이되기를 바랍니다.


1
또한 : 테스트, 백업, 버전 관리를 사용하십시오. 새로 온 사람이라면 방금 이해하지 못하는 소스에 문제가 있으며, 무해한 변화가 예상치 못한 문제를 일으킬 수 있습니다.
Scott C Wilson

더 추가하겠습니다. 변경하지 마십시오 아무것도 당신이 때까지 조치를 요구 실패한 테스트를 . 테스트 작성을 시작하십시오. 테스트에 실패하면 문제가 없는지 확인하십시오. 그런 다음 변경해야 할 의무가 있습니다. 그런 다음 시스템이 테스트로 포화 될 때까지 기다리십시오. 항상 시스템을 찾은 것보다 좋거나 나쁘지 않은 상태로 두십시오.
emory

5

눈에 띄는 것 중 하나는 편집 한 댓글입니다.

이전 코드의 모든 변경 사항은 코드에 주석을 달고 해당 변경과 관련된 메타 정보 (날짜, 프로그래머, 작업)를 주석 처리해야합니다 (이것은 혼란스러워졌으며 3 개의 중고 라인과 50 개의 오래된 라인이 주석 처리되었습니다). 코드 문제 일뿐만 아니라 소프트웨어 개발 문제 관리라고 생각합니다.

또한 설명하는 많은 문제가있는 레거시 FoxPro 코드 기반을 상속받은 프로젝트도 있습니다. 내가 프로젝트에 처음 소개 한 것 중 하나는 좋은 소스 코드 저장소였습니다. FoxPro는 SourceSafe와 통합 할 수 있지만 그 제품은 사용하기가 어렵습니다.

Paul McNett의 scx 도구 ( http://paulmcnett.com/scX.php) 의 사본을 잡고이를 개발주기에 통합했습니다. 바이너리 FoxPro 코드를 텍스트 형식으로 추출한 다음 Subversion, Mercurial 또는 git과 같은 소스 리포지토리에 넣을 수 있습니다. (SubFox 프로젝트는 http://vfpx.codeplex.com 에서 찾을 수 있습니다. 유용 할 수 있습니다.

이 도구는 히스토리를 제공하며 프로그래머가 코드 유지 보수 작업을 수행 할 수 있도록합니다. 이러한 도구를 사용하는 방법을 배우려면 시간이 다소 걸리지 만 모두 무료이기 때문에 시간을 투자하지 않는 것이 합리적입니다. (Job 프로젝트를 그런 식으로 이동할 수없는 경우에도).


4

나는 funkymushroom의 대답에 강력하게 동의 할 것입니다. 팀 환경 인 경우 미래의 좋은 과제를 계획 할 계획이라면 다른 사람들이 자신이 코드를 리팩터링하거나 재구성하고 있음을 알도록하십시오.

개인 내가 알고 경험하는 동안 회원님이 다른도 수정 및 유지 보수 코드를 유지하는 경우, 코딩 스타일에서 숙박을 기존 코드의 스타일로. 주석과 설명을 추가하는 것은 좋지만 기본 레이아웃과 규칙은 그대로 유지해야합니다. 프로젝트의 오래된 전문가 / 총은 코드가 수년 동안 본 것과 유사 할 것으로 예상합니다.

고객이 버그에 대해 비명을 지르면 경영진은 가능한 빨리 문제를 해결하기 위해 오래된 총으로갑니다. 이 오래된 총기들이 압력을 받고있을 때“코드 정리”를 발견하여 조정해야하는 변수 하나를 이동하거나 이름을 바꾸는 데 걸리는 시간을 소비해야한다면 회사의 이름이 " 진흙".

위기가 끝나면 먼저 오래된 총이 중요 업데이트를 천천히 비난합니다. 다음으로 회사에있는 동안 정리 된 코드를 유지 관리해야합니다. 마지막으로, 새롭고 흥미로운 프로젝트를 사용할 수있게되면 관리자는 누가 프로젝트를 수행해야하는지 전문가에게 물어보고, 일단 한 번 망쳐 놓았다면, 마지막에 사료가 던져 질 때까지 새 프로젝트로 만들지 않을 것입니다. 마감일을 맞추기 위해.

대학에서“올바른”코딩 방법을 배웠고 지금은 노동력을 사용하고 있다면“올바른”방법을 잊어 버리십시오. 이들은 대학 배정이 아니며,이 프로젝트는 한 학기 동안 지속되지 않으며, 몇 년 동안 살 수 있으며, 최신 CS 트렌드에 대해 다른 수준의 전문 지식과 다른 수준의 관심을 가진 사람들 그룹에 의해 유지되어야합니다. 팀 플레이어 여야합니다.

당신은 학교에서 가장 큰 핫 샷 프로그래밍이 될 수 있지만, 직장에서, 첫 직장에서는 거리 신념이 전혀없는 초보자입니다. 몇 년 동안 프로그래밍을해온 사람들은 학교 나 성적에 대해 후회하지 않습니다. 그것은 다른 사람들과 얼마나 잘 어울리 며 삶에 얼마나 많은 방해가되는지입니다.

20 년 동안 여러 에이스 프로그래머들이 해고 된 것 같습니다. 주로 그들이“올바른”방식으로 일을해야하기 때문입니다. 업무에 매우 독특하고 특별한 것을 가져 오지 않는 한 교체 할 수 있습니다. 당신은 당신의 수업의 최고 였을지도 모르지만 내년에는 다른 누군가가 그들의 수업의 최고가 될 것이며 일자리를 찾을 것입니다.

나는 당신이 일을 바꾸기로 결정할 때까지, 당신의 일을 유지하는 것입니다. 직업을 유지한다는 것은 다른 사람이 건설하고 지불 한 놀이터에서 즐겁게 놀아야한다는 것을 의미합니다.

나는 부정적으로 들린다는 것을 알고 있지만 항상 희망이 있습니다. 경험을 쌓고 성공을 거두면 영향력을 행사하고 더 나은 방식으로 변화시킬 수 있습니다. 새 코드를 작성하거나 새 프로젝트를 작성할 때 원하는 변경 사항을 적용하십시오. 그것이 새로운 코드라면, 오래된 총은 그것이 그것을 남긴 방식으로 기대하지 않으며, 이점을 볼 때 새로운 방식을 배우고 적응시킬 수 있습니다.

오래된 시스템은 변경 될 수 있지만 시간이 걸립니다. 무언가를 바꾸는 것은 위험을 초래하고, 비즈니스는 위험을 미워하며, 회사가 변화에 익숙해 지려면 시간과 노력이 필요합니다.

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