1

현재 작업 중이거나 작업 한 프로젝트는 다소 조직화되어 있습니다. 일부는 리팩토링되고 문서화되며 단위 테스트를 거친 반면 다른 것은 그렇지 않습니다.처음부터 실제 코드베이스를 만들려면 어디에서 시작해야할까요?

이전에 작성한 코드를 다시 사용하려면이 코드를 작성한 프로젝트를 검색하는 데이 코드를 복사하여 새 코드, 리팩터링, 문서화 및 단위로 붙여 넣기보다는 필요한 경우 테스트.

추가 작업을해야하고, 작성된 내용과 프로젝트 전체에서 코드를 복제하는 위치, 그리고 아마도 (아마도 가장 추악한) 코드를 기억해야하기 때문에 추한 것입니다. 일반적인 코드베이스없이 다른 개발자와 함께 작업하는 것도 문제입니다.

이제 코드베이스를 만들고 싶습니다. 그러나 그것에 대해 아무것도 모르고 어떤 회사에서도 심각한 것을 본 적이 없습니다.

어디서부터 시작해야합니까? 그러한 코드베이스를 만드는 방법이나 기존 또는 상상적인 코드베이스를 기술하는 방법을 설명하는 책이나 온라인 문서가 있습니까? 어떻게 작동합니까?

답변

0

재사용 가능한 라이브러리를 말하는 것 같습니다. 링커와 컴파일러를 사용하는 언어는 산출물을 작게 만드는 데 사용되지 않는 코드를 제거하고, 적시 컴파일 또는 해석 언어는 전체 라이브러리를로드함으로써 자원을 낭비 할 수 없기 때문에 약간 언어에 따라 다릅니다.

길지 않은 짧은 코드는 코드를보고 일반적으로 수행되는 작업과 사용되는 매개 변수를 파악하는 것입니다. 변경을위한 작은 공간을 추가하고 모든 기능을 숨길 수있는 인터페이스를 만드십시오. 인터페이스를 올바르게 정의하는 것이 가장 중요합니다. 함수 호출 모음을 피하고 대신 인터페이스 뒤에 관련된 함수를 만든 다음 작업별로 인터페이스를 만들어 작업을 작업으로 분할하려고합니다.

인터페이스 솔루션은 리팩토링 된 작업의 구현과 인터페이스를 사용하는 작업을 분리합니다. 이렇게하면 공통 코드를 프로젝트 코드와 분리하여 다른 속도로 개발할 수 있습니다.

인터페이스가 특정 작업이나 작업과 관련된 모든 관련 정보를 그룹화하여 인터페이스가 서로 의존하지 않도록하십시오.

인터페이스에 대한 유용한 링크입니다. 링크 중 일부는 객체 지향 언어에 대해 이야기하지만 원리와 아이디어는 다른 유형의 언어에도 적용될 수 있습니다.

http://en.wikipedia.org/wiki/Interface_%28computer_science%29#Software_interfaces_in_object_oriented_languages

http://en.wikipedia.org/wiki/Interface_%28computer_science%29#Programming_against_software_interfaces

0

Google Code 또는 GitHub과 같은 버전 제어 서비스를 사용하십시오. 이렇게하면 코드가 온라인으로 백업되므로 필요한 경우 이전 버전으로 되돌릴 수 있습니다.

+0

확실하지이 질문의 일부를 대답했다! –

+0

@David 코드베이스를 백업하는 것이 중요합니다. MainMa의 하드 드라이브가 충돌하면 수년 간의 작업을 망칠 수 있습니다. – mcandre

+0

죄송합니다. Wikipedia에서 "Codebase"기사를 읽었을 때 "codebase"라는 단어가 혼란 스러울 수 있습니다. 필자는 단일 프로젝트 ("코드베이스"에 대한 Wikipedia 정의)의 소스 코드에 대한 것이 아니라 프로젝트 전체에서이 코드를 재사용하고 공유 할 수있는 소스 코드를 저장하는 통일 된 방법에 대해 이야기하고자합니다. 그래서 제 질문은 버전 제어에 관한 것이 아닙니다. –

0

먼저, 이것이 다른 개발자 및 관리의 개입을 요구하는 상당한 노력임을 인식하십시오. 코드베이스를 재구성하는 동안 새로운 기능에 대한 작업을 중단해야 할 필요가있을 것입니다. 이는 거의 관리 옵션이 아닙니다. 그것들을 언급하는 것조차도 나쁠 수 있습니다. "우리는 re-org가"이 작품이 완성 될 때까지 "우리는 re-org를 할 수 없다"라는 메시지가 올 때까지 이것을 넣을 수 있습니다. 그리고 커다란 작업과 re-org는 서로 기다립니다. 이는 관리 기능이 교착 상태에 빠지며 해결하기가 어렵습니다.

함께 이동하면 팀원들과 함께 앉아 제품이 무엇인지, 구성 방법, 중복 위치, 제품 재사용의 이점을 파악해야합니다. 제품의 빌드 구조를 면밀히 검토하고 빌드하려고하는 공유 라이브러리를 포함하도록 리팩터링해야합니다.

앞으로 이동하면 종속성을 격리해야합니다. 커먼즈가 프로젝트에 의존하게하지 마십시오. 프로젝트 (projB)가 미래에 프로젝트 (projA)에 의존하게 될 가능성이 높으면 프로젝트가 다른 프로젝트 (projB)에 의존하게하지 마십시오. 순환 의존성으로 인해서 우는 소리와이를 g아 먹습니다.

+0

소스 코드의 전체 조직에서 이와 같이 심각한 변화를하는 것은 시간이 많이 걸리고 분명하지 않다는 것을 알고 있습니다. 그리고 나는 그것을하기 위해 몇 주를 보낼 준비가되어 있습니다, 그래서 괜찮습니다. 이제는 의존성과 모든 것들이 진짜 문제입니다. 그 이유는 내가 무엇을 * 발생할 수있는 문제인지, * 어떻게 * 해결할 것인가, 또는 그 영향을 줄이는지를 설명 할 책/문서를 요구하고 있기 때문입니다. –

+0

OMG, "앞으로 나아가 라." 하아! – mcandre