지금까지 본 최고의 오픈 소스 코드는 무엇입니까? [닫은]


19

오픈 소스의 가치 중 일부는 새로운 플랫폼이나 언어를 시작하는 사람들에게 훌륭한 예제 코드를 제공하는 것입니다.

가장 좋은 오픈 소스 코드는 무엇이며 왜 선택을 좋아합니까? 모든 언어가 가능하지만 특히 Objective-C의 모범 사례에 관심이 있습니다.

분명히 이것은 개방형 질문이므로 잠시 동안 질문을 열어두고 어떤 종류의 답변을 얻을 수 있는지 살펴 보겠습니다.

감사!

편집 : "최고의"나는 주어진 언어 또는 플랫폼에서 관용구를 따르는 코드뿐만 아니라 코드를 "전문적"으로 만드는 부분-좋은 문서, 테스트 스위트 등을 포함하는 코드를 생각하고 있었지만 간결한 코드이지만 지나치게 간결하거나 수다스러운 코드보다 지나치게 영리하지 않은 것이 좋습니다.


4
"최고"에 대한 특별한 정의가 있습니까?

귀하의 질문은 약간 광범위합니다. 아마도 더 구체적으로 편집하고 "최고의"의미를 정의 할 수 있습니다. 최고의 UI, 최고의 데스크톱 / 웹 / 전화 앱, 최고의 동시성, 최고의 시각적으로 매력적인 코드?
Walter

좋은 질문은 +1입니다. 특정 언어 / 기술에 따라 정리해 보는 것이 좋습니다. Linux 용 C와 데이터베이스 드라이버 용 Java를 비교하는 것은 솔직한 아이디어입니다.
Fanatic23

그 설명을 편집하면 다른 사람들이 질문을 읽는 것이 매우 도움이 될 것입니다. :)
Michael K

답변:


14

수년 동안 오픈 소스 코드를 살펴본 결과 거의 모든 것에 실망했습니다.

저에게 가장 큰 자극은 대개 의견이 거의 없다는 것입니다. 종종 유일한 의견은 길고 합법적 인 저작권 표시입니다.

리눅스 커널은 파일이 어떤 용도로 사용되는지에 대한 주석이없는 예입니다 (예 : XYZ 용 드라이버는 적어도 제게 올바른 위치에 있다고 말합니다).

나는 코딩 표준이 코드 단위의 기능을 말할뿐만 아니라 이해하기 쉬운 주석을 요구하는 상용 및 방위 프로그래밍에서 왔으며 코드를 통해 알고리즘, 방법, 특성, 해킹 / 영리한 것들을 설명하는 주석 블록이 있어야합니다. , 뒤 따르는 사람이 실제 코드를 힘들게 넘어 가지 않고 수행되는 작업을 신속하게보고 파악할 수 있습니다.

아마도 도덕은 : 당신이 무엇을하고 있는지 말 해주세요.

나는 이것을 잘하는 오픈 소스 코드를 찾지 못했습니다. 좋은 코딩 관행을 배우기위한 수단으로 오픈 소스를 찾고있는 한, 황홀한 조언은 : Do n't.


나는 오픈 소스 프로젝트에 대한 의견이 불충분하고 문서화가 잘 안된다는 데 동의합니다. 그러나 그들은 모두 자원 봉사자입니다. 자원 봉사자들이 자신이 찾고있는 보상 (상태, 사회적, 위대한 일을 성취하거나 사랑하는 일)없이 불쾌한 일을하도록 동기를 부여하는 것은 어렵습니다.

@ pierre303-나는 NoRMproject.org를 설립하고 유지했다. 내가하는 주요 작업 중 하나는 코드를 작성할 때 주석을 작성하는 것이다. 기고자들이 지도자들이 강조하는 부분을 연구 할 것이라고 생각합니다. NoRM의 경우 테스트, 주석 및 관용어 (c #) 코드입니다. 우리는 꽤 전문적이고 유지 보수가 가능한 코드베이스를 가지고 있다고 생각합니다.
앤드류 Theken

코드를 작성할 때 주석을 작성해야한다는 데 동의합니다. (또한 이기심이 많고 코드 블록 앞에 서사를 작성하는 데 도움이되기 때문에 주로 내 모든 코드에서이 작업을 수행합니다. 실제로 실제로 수행하기 전에 수행해야 할 작업을 내 마음에 명확하게 설명합니다.)
quick_now

"이 글을 읽는 데 어려움을 겪었다면 읽는 데 어려움을 겪어야합니다."
Denis de Bernardy

+1, @quickly_now-코드를 잘 계획하고 테스트 하고 주석 처리 해야한다고 생각합니다 ! 어떤 종류의 미친 행성에 살고 있습니까?


5

Donald Knuth는 두 권의 프로그램을 작성하여 출판인이 할 수있는 것보다 책에서 수학 공식을 더 잘 조판 할 수있었습니다.

이 두 프로그램 (최종 버전)은 Literate Programming 을 사용하여 작성되었으며 , 소스 코드의 인쇄 된 조판 버전을 만들 수있게했으며 책으로 출판되었습니다. 이것들은 내가 읽은 최고의 문서화 된 프로그램입니다!

  • "컴퓨터 및 조판, 볼륨 B : TeX : 프로그램"
  • "컴퓨터 및 조판, 볼륨 D : 메타 폰트 : 프로그램"

온라인으로 읽을 수는 없지만 아마존에서는 http://www.amazon.com/Computers-Typesetting-D-Metafont-Program/dp/0201134381/ 의 메타 폰트 책을 "내부로"볼 수 있습니다 .

경고 : 내용이 무겁기 때문에 각 책이 600 페이지에 달합니다.


1
참고 : 온라인에서 사용할 수없는 조판 버전입니다. 소스는 완전히 사용 가능하며 약간의 노력으로 인쇄 된 버전을 생성하는 데 사용할 수 있습니다.

4

Beautiful Code 책 은 기고자들이 오픈 소스 프로젝트의 아름다운 코드의 모범이라고 생각하는 몇 가지 샘플 로이 질문에 대답하려고합니다.
대체 텍스트


4
책을 체크 아웃 할 가치가 있습니까?
Oliver Weiler

그러나 이것은 "실제"오픈 소스 코드가 아닙니다. 이 답변은 부정 행위입니다! : P
Noldorin

1
나는 그것을 소유하고 감동하지 않았다. 대부분의 챕터는 지루하지만, 몇 가지 주요 사항이 있습니다.지도를 정확히 기억하면지도 / 축소가 설명됩니다.
Martin Wickman

4

코드 점화기

OS 프로젝트에서 본 가장 깨끗하고 문서화 된 소스 코드 중 일부입니다.


1
PHP와 가장 깨끗합니까?
Kugel

1
@ Kugel : 둘 다 그렇습니다.
Josh K

CodeIgniter의 소스를 살펴본 결과 실제로 체계적이고 깨끗하게 보입니다. 나는 당신이 PHP를 얻을 수 있다고 생각합니다. :) 그리고 나는 항상 소스 코드에서 유머를 좋아했습니다. "// 아직 DB를 지정하지 않았습니까? 무의미합니다 ... if (! isset ($ params [ 'dbdriver']) ..."
Bjarke Freund-Hansen

2
나는 소스 코드를 들여다 보았고 잘 문서화되고 따르기 쉽다는 것을 인정해야 하며 OS PHP에서 기대 하지 않았습니다.
OnesimusUnbound

2
또 다른 훌륭한 OS PHP 프레임 워크는 fuelphp ( fuelphp.com )로 문서화되고 깔끔하게 정리되어 있으며 머리카락을 뽑지 않는 명명 규칙을 사용합니다. 그것은 스파게티 코드를 탓하는 것이 PHP가 아니라는 것을 증명하며, 일반적으로 코드를 작성하는 사람들입니다.
Michael JV

3

나는 매우 잘 구성된 두 개의 프로젝트를 보았습니다.

  1. 장고
  2. 크롬 프로젝트

특히 두 번째는 몇 가지 사항에 기초하여 매우 흥미 롭습니다.

  • 여러 가지 프로세스 (탭, 플러그인)에 프로세스를 사용하는 방법과 서로 맞는 방법
  • 각 Windows, Mac, Linux에 고유 한 GUI가있는 다중 플랫폼
  • 웹 키트 통합

또한 Postgre가 깨끗하게 작성되었다고 들었지만 (MySql과 대조적으로) 직접 읽지는 않았습니다.


1
PostgreSQL 코드의 경우 +1 매우 깨끗하고 읽을 수 있습니다.
Denis de Bernardy

2

리눅스 커널을위한 C 코드 가 꽤 좋다고 말하는 사람들도있다 .

(나는 그것을 이해하지 못한다! 아마도 가장 훌륭한 오픈 소스 C 프로젝트 일 것이다.)


1
최적화 된 코드는 훌륭합니다. 내 경험으로는 가독성이 좋지 않습니다. 물론, 나는 아무 것도 쓰지 않았습니다. 그냥 읽으십시오.
Michael K

1
그래, 맞아 불행히도 그 질문은 실제로 "최고"를 정의하지 않았으므로 내 자신의 정의를 취하고 있습니다. :)
Noldorin

2

LLVM 소스 코드가 매우 읽기 쉽다 는 것을 알았습니다 . 내가 본 것 중 가장 깨끗한 C ++라고 확신합니다. 익숙하지 않다면 기본적으로 컴파일러 구성 툴킷입니다.

  • 광범위한 테스트 스위트가 있습니다. 실제로, 기능 테스트를위한 세트와 성능 테스트를위한 세트 (LLVM 자체 및 생성 된 컴파일 된 프로그램) 중 하나 이상이 있습니다.
  • 코드는 주석이 잘되어 있습니다.
  • 반복성이 높은 코드 (예 : 다양한 백엔드의 명령어 일치와 같은)는 상위 수준 DSL (TableGen이라고 함) 설명에서 자동 생성됩니다.
    • 또한 동일한 설명에서 여러 개의 분리 된 코드 조각을 생성 할 수 있습니다. 예를 들어 백엔드 사양은 컴파일러 백엔드의 일부로 사용되지만 어셈블러 및 디스어셈블러에도 사용됩니다.
  • 꽤 좋은 문서가 있습니다.

그것은 꽤 큰 프로젝트이므로 모든 것이 어떻게 작동하는지 정확하게 이해할 수 있다고 기대하지 마십시오. 그러나 높은 수준의 개요를 얻는 것은 매우 쉽습니다.


1

큰 프로젝트는 아니지만 SubSonic ORM 은 해킹하기가 매우 쉽습니다. 내가 필요한 방식을 정확하게 수정할 수 있었던 최초의 실제 오픈 소스 프로젝트였습니다. 다른 사람들의 대부분은 소스를보고 벽에 머리를 부딪 혔습니다. 몇 시간 내에 PostgreSQL (SQL Server 공급자에 따라)을 부분적으로 지원했습니다. 내가 본 것 중 가장 잘 구성된 프로젝트입니다 ...하지만 많은 오픈 소스 프로젝트를 보았습니다.


0

첫 번째 간단한 예 : 이벤트 처리 시스템 zope.event의 코드. 다른 이벤트 리스너에게 이벤트를 전달하는 다른 이벤트 시스템을 사용했습니다. zope.event 코드를 보았을 때 페이스 팜 타임이었는데 얼마나 간단한 지 깨달았습니다.

파이썬으로 작성되었으며 다음은 전체 코드입니다.

subscribers = []

def notify(event):
    """ Notify all subscribers of ``event``.
    """
    for subscriber in subscribers:
        subscriber(event)

가입자를 추가하려면 다음을 수행하십시오.

from zope.event import subscribers
subscribers.add(MySubscriber())

내가 본 KISS의 가장 좋은 예.

더 복잡한 예 : Martian 코드 기반은 영리한 파이썬 핵을 사용하더라도 매우 훌륭하고 읽기 쉽습니다. Martian을 사용하여 빌드 된 대부분의 Grok 코드도 마찬가지입니다.


3
이 코드의 장점이 무엇인지 이해하지 못합니다. 나는 파이썬을 모르지만 여기서 관찰자 패턴의 간단한 사용 만 볼 수 있습니다.
barjak

다른 이벤트 시스템과 비교 했습니까? 단순화를 위해 또 다른 파이썬 예를 살펴 : pypi.python.org/pypi/pyjon.events/1.1.1을
레나 Regebro

1
Beautiful-실제로 자바 스크립트에서 매우 비슷한 것을 썼습니다. 내가 똑똑한 것 같아? ;)
Michael K

훨씬 더 나쁜 이벤트 시스템이 있다고해서 이것이 훌륭한 코드라는 의미는 아닙니다. 이 코드를 엄청나게 많은 언어로 보았습니다. 그리고 더 중요한 것은 유형이 안전한 구현을 보았습니다.
back2dos

@ back2dos : 이것은 안전한 유형입니다.
Lennart Regebro

0

이 책을 읽으십시오 . 오픈 소스 응용 프로그램의 아키텍처 . 이 책에서 논의 된 프로젝트에서 설계 결정이 내려진 이유와 방법에 대한 비판을 제공해야합니다.

오랫동안 당신을 피할 수있는 최고를 찾는 대신, 아마도 책의 범위를 벗어난 일부 프로젝트의 디자인을 시도하고 고맙게 생각하십시오. 이를 통해 실수를 반복하지 않고 (또는 일반적으로 바퀴를 재창조하는 대신) 이러한 프로젝트의 성공을 달성하는 데 도움이 될 수 있습니다.

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