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


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.