'코드 스큐'란 무엇입니까?


11

Scala의 O'Reilly 책에서 코드의 복사 붙여 넣기는 다음과 같은 내용을 읽습니다.

... 코드 팽창, 유지 관리 및 왜곡 문제를 생성합니다 .

문맥에서 왜곡이라는 단어의 명확한 정의를 볼 수 없습니다. 복사 붙여 넣기 문제를 알고 있지만 '뒤틀림'이라는 단어에 맞출 수는 없습니다. 이것은 O'Reilly 책에서 사용되기 때문에 순환하는 실제 프로그래밍 용어라고 생각합니다.

어떤 포인터?

답변:


19

가장 일반적인 정의의 왜곡은 정렬되지 않은 것을 의미합니다 (병렬이 아님). 분명히 코드를 복사하여 붙여 넣을 때 두 사본은 동일하고 병렬입니다. 이것은 변하지 않습니다. 한 사본을 변경했다고해서 다른 사본 (부주의 또는 무지로 인해)이 변경된 것은 아닙니다. 이제 두 곳의 서로 다른 곳에 존재하는 두 가지 버전의 코드가 있습니다 (더 이상 동일하지 않음). 동작이 다른 곳이 아닌 다른 곳에서 작동하는 것처럼 보일 때 이상한 버그가 발생할 수 있습니다. 코드를 건조하게 유지하십시오 (반복하지 마십시오).

편집 / 추가 : 복사하여 붙여 넣으려는 충동이 있다면 공유 수퍼 클래스 (객체 지향) 또는 일종의 포함 된 유틸리티 함수 (기능)에 복사하는 코드를 추상화해야합니다.


좋은 설명을 위해 +1. 또한 일부 카타르시스의 경우, 수백 줄과 수백 줄의 복사 붙여 넣기 코드로 구성된 코드베이스를 정확하게 해결해야합니다.
KChaloux

2

어린 시절 전화 게임을 한 적이 있습니까? 알다시피, 각 사람이 다음 사람에게 문구를 줄이면서 마지막으로 말하면 마지막 사람이 문구를 크게 말하고 모든 사람이 원본과 어떻게 다른지에 대해 웃습니다. 비뚤어집니다. 코드를 복사하여 붙여 넣을 때 필연적으로 하나 이상의 복사본을 약간 변경합니다. 또한 동일한 코드를 자주 복사하여 붙여 넣을수록 변경 사항이 많아지고 코드가 왜곡됩니다. 수백 개의 복사 및 붙여 넣은 블록이있는 코드를 보았습니다. 각 블록은 몇 문자 만 다르므로 유지 관리가 거의 불가능합니다. 코드 섹션을 잘라내어 붙여 넣기를 원한다면 적어도 자체 기능에 삽입하는 것이 좋습니다.


3
복사하여 붙여 넣기로 인해 차이가 발생 하지 않습니다 . 복사하여 붙여 넣은 후에 발생하는 원인입니다.
Stephen C

1
사실이지만 코드를 복사하여 붙여 넣지 않았다면 차이가 발생하지 않았을 것입니다.
Jim Nutt

좋은 예이지만 비유는 개념에서 비뚤어 집니다. 유사하게, 붙여 넣기는 다른 사본을 작성하지만 실제 개념에서는 사본이 동일하지만 동기화되지 않으므로 기울어 짐이 발생합니다.
Sundeep
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.