Правильно написанные проекты с открытым исходным кодом (для изучения)? [закрытый]

После того, как это произошло в текущем экзамене по кодированию для инженера-конструктора FB, мне пришлось решить его в спокойной прохладной атмосфере, так что вот мои 2 цента:

var max_profit = 0;
var stockPrices = [23,40,21,67,1,50,22,38,2,62];

var currentBestBuy = 0; 
var currentBestSell = 0;
var min = 0;

for(var i = 0;i < (stockPrices.length - 1) ; i++){
    if(( stockPrices[i + 1] - stockPrices[currentBestBuy] > max_profit) ){
        max_profit = stockPrices[i + 1] - stockPrices[currentBestBuy];
        currentBestSell = i + 1;  
    }
    if(stockPrices[i] < stockPrices[currentBestBuy]){
            min = i;
        }
    if( max_profit < stockPrices[i + 1] - stockPrices[min] ){
        max_profit = stockPrices[i + 1] - stockPrices[min];
        currentBestSell = i + 1;
        currentBestBuy = min;
    }
}

console.log(currentBestBuy);
console.log(currentBestSell);
console.log(max_profit);
48
задан Sam 17 August 2014 в 20:31
поделиться

8 ответов

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

19
ответ дан Daniel Pollard 7 November 2019 в 12:39
поделиться

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

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

13
ответ дан Jonas Kölker 7 November 2019 в 12:39
поделиться

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

6
ответ дан Jens A. Koch 7 November 2019 в 12:39
поделиться

ядро Linux является очень хорошим способом учиться.

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

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

5
ответ дан paulgreg 7 November 2019 в 12:39
поделиться

Вы найдете много примеров. Но сказали Jim Buck, это зависит от Ваших интересов. Я изучил метрику s - тонна "материала" от источник SharpDevelop .

3
ответ дан hometoast 7 November 2019 в 12:39
поделиться

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

<час>

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

<час>
2
ответ дан Thomas Owens 7 November 2019 в 12:39
поделиться

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

Платформа ведения журналов Apache Log4Net .

Ее исходный код легко читается и "кроссплатформенный" [компилируется на: .NET 1.0, 1.1, 2.0 , CF, MONO ...], поэтому полезны для урока "кроссплатформенной" разработки на C # ...

3
ответ дан 7 November 2019 в 12:39
поделиться

Одно из лучших штук, которые я нашел из чистого и лаконичного исходного кода, является источником jQuery . Независимо от того, нравится ли вам JavaScript или нет, это делает отличный случай против адвокатов «Кодекса, являющегося документацией» .

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

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

(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 );

...
5
ответ дан 7 November 2019 в 12:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: