Подтвердить что ты не робот

Хорошо написанные проекты с открытым исходным кодом (для обучения)?

Мы изучаем программирование путем написания программ и обучения из других программ. Какие репозитории/программы с открытым исходным кодом вы предлагаете для обучения/улучшения программирования?

При цитировании справки также указывайте, что вам понравилось.

4b9b3361

Ответ 1

Я бы порекомендовал Scott Hanelman еженедельные статьи исходного кода, он делает именно то, что предлагает, то есть читает больше исходного кода, чтобы поправиться. Это стоит того, чтобы прочитать.

Ответ 2

Я могу порекомендовать сборник загадок Саймона Татхама. Это серия головоломок (minesweeper, sudoku, пятнадцать), доступных для Windows, OS X и Linux (и как java-апплеты). Архитектура довольно проста: есть интерфейсный интерфейс с тремя реализациями (по одной на платформу), интерфейсный интерфейс с одной реализацией за игру (я привел три примера) и середину, что заставляет их говорить вместе, делать сериализацию и другие аккуратные вещи.

В принципе, это хороший ООП. Написано на C. Легко вносить свой вклад (я реализовал игры Filling и Range), так как он хорошо документирован и легко читается.

Ответ 3

Disruptor код является образцовым, а также многое можно узнать из того, что он делает для достижения экстремальной производительности на современном оборудовании.

Стоит прочитать объяснение Мартина Фаулера его архитектуры, техническая статья (PDF) и презентация QCon. Также блоги разработчиков содержат много хорошего чтения, особенно Механический блог сочувствия, в котором много говорится о том, как работают современные процессоры и память.

Ответ 4

Это зависит от ваших интересов, но я работал с Quake III codebase, и это было довольно хорошо написано и приятно работать с. Он написан на C.

Ответ 5

ядро ​​Linux - очень хороший способ узнать.

Я знаю, что это может быть трудно погрузиться из-за много архитектурной структуры и большого количества кода, но там есть очень хорошая статья, чтобы идти медленно внутри, например этот из Тима Джонса.

Я многому научился, посмотрев на конкретный предмет, например, на реализацию драйвера FAT и файловую абстракцию.

Ответ 6

Одна из лучших статей, которые я нашел в ясном и сжатом исходном коде, - источник jQuery. Независимо от того, нравится ли вам Javascript или нет, он делает большой аргумент против сторонников "кода, являющегося документацией".

Там много комментариев, но это не аськи, и вы можете видеть ясное рассуждение - комментарии дают вам точно знать, что именно нужно сделать.

Пример (полный источник):

(function(){

var 
    // Will speed up references to window, and allows munging its name.
    window = this,
    // Will speed up references to undefined, and allows munging its name.
    undefined,
    // Map over jQuery in case of overwrite
    _jQuery = window.jQuery,
    // Map over the $ in case of overwrite
    _$ = window.$,

    jQuery = window.jQuery = window.$ = function( selector, context ) {
        // The jQuery object is actually just the init constructor 'enhanced'
        return new jQuery.fn.init( selector, context );
    },

    // A simple way to check for HTML strings or ID strings
    // (both of which we optimize for)
    quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
    // Is it a simple selector
    isSimple = /^.[^:#\[\.,]*$/;

jQuery.fn = jQuery.prototype = {
    init: function( selector, context ) {
        // Make sure that a selection was provided
        selector = selector || document;

        // Handle $(DOMElement)
        if ( selector.nodeType ) {
            this[0] = selector;
            this.length = 1;
            this.context = selector;
            return this;
        }
        // Handle HTML strings
        if ( typeof selector === "string" ) {
            // Are we dealing with HTML string or an ID?
            var match = quickExpr.exec( selector );

            // Verify a match, and that no context was specified for #id
            if ( match && (match[1] || !context) ) {

                // HANDLE: $(html) -> $(array)
                if ( match[1] )
                    selector = jQuery.clean( [ match[1] ], context );

                // HANDLE: $("#id")
                else {
                    var elem = document.getElementById( match[3] );

                    // Handle the case where IE and Opera return items
                    // by name instead of ID
                    if ( elem && elem.id != match[3] )
                        return jQuery().find( selector );

...

Ответ 7

Вы найдете множество примеров. Но сказал Джим Бак, это зависит от ваших интересов. Я узнал метрическую строку "stuff" из источника

Ответ 8

Относительно небольшая, но с достаточной сложностью, чтобы иметь возможность учиться, мой голос гласит:

Apache Log4Net рамки ведения журнала.

Исходный код очень читабельный, а "кросс-платформенный" [компилируемый на:.NET 1.0, 1.1, 2.0, CF, MONO...], что является ценным для урока в "кросс-платформенной" разработке С#...

Ответ 9

Если у кого-то есть копия Чтение кода Диомидисом Спинеллисом, о каких проектах с открытым исходным кодом он пишет там?


@Avinash: Если вы хотите больше узнать о программировании в целом, я бы рекомендовал как чтение кода, так и качество кода Spinellis. У них есть примеры кода из разных проектов, и я думаю, что все FOSS, так что вы можете не только читать о них, но и перейти к версии, обсуждаемой в книге и последней версии, чтобы прочитать больше кода и узнать.


Ответ 10

Я полностью рекомендую Code Complete 2nd Edition (ISBN: 0735619670), написанный Стивом Макконнелом. По большей части он использует С++ в качестве своего lingua franca, однако он иногда упоминает код Visual Basic. Фактически, эта книга фактически использовалась на протяжении всего факультета компьютерных наук колледжа для пропаганды хороших методов кодирования. И, честно говоря, после прочтения этой книги мои навыки и производительность в области кодирования улучшились не по дням, а по часам.