Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Читабельность кода

263
11 июля 2007 года
koltaviy
816 / / 16.12.2004
barracuda, все конечно классно, но читать-то твой код как? :)
Страницы:
27K
09 июля 2007 года
melon
7 / / 04.07.2007
Имеется следующая задача:
"В массиве целых чисел (не более 100 элементов), не превосходящих по модулю 1000 и среди которых нет равных, найти порядковый номер третьего по величине числа.

Например:
Число чисел 10

1-е 1
2-е 6
3-е 7
4-е -51
5-е -10
6-е -16
7-е 71
8-е 53
9-е 11
10-е -13

Ответ: третье по величине число имеет порядковый номер 9.

Т.е. первое, самое большое число - 71, второе - 53, а третье - 11

Но как показать именно порядковый номер и как найти третье число?
Пока вот нашел только максимальный элемент.

Код:
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
           
            const int n = 10;
            int[] a =new int[n] { 1, 6, 7, -51, -10, -16, 71, 53, 11, -13 };
            int max = a[0];
            for (int i = 1; i < n; i++)        
            if (a>max) max=a;
            Console.WriteLine("Максимальный элемент= "+ max);
        }
    }
}


Вообще по идее нужно написать вот так:
 
Код:
if (a>max) max=a[i+2];

Но тогда выскакивает непонятное окно с ошибкой. Хотя когда я пишу:
 
Код:
if (a>max) max=a[i+1];

то все нормально, и программа выбирает второй максимальный элемент.
2.7K
11 июля 2007 года
barracuda
76 / / 29.03.2004
OlgaKr В условии не сказано что масив должен сохранится

максимальное количество проходов в данном случае равна mas*num-num
минимальное - num

а вот без порчи масива

Код:
#define min -1000
#define mas 10
#define num 3


void main()
{
int m[mas] = {1, 6, 7, -51, -10, -16, 71, 53, 11, -13};
int i=1, k=0;
int n[num]= {min, min, min};

while(m>m[k]?n[0]=m,k=i,i=1:m>n[1]&&m<n[0]?n[1]=m,++i<mas:m>n[2]&&m<n[1]?n[2]=m,k=i,++i<mas:++i<mas);

cout << k << " - " << n[num];

}


но аптимизировано для num = 3
для других num не будет работать
2.7K
11 июля 2007 года
barracuda
76 / / 29.03.2004
Цитата: koltaviy
barracuda, все конечно классно, но читать-то твой код как? :)



прочтешь пятерку с плюсом получишь :)
а вот код для любого num при (0 < num < mas)

Код:
#define min -1000
#define max  1000
#define mas 10
#define num 3


void main()
{
int m[mas] = {1, 6, 7, -51, -10, -16, 71, 53, 11, -13};
int i=1, k=0, n=min, h=max, s=0, r=0, t=0;

while(i+1==mas&&n<h?h=n,r=t,k=0,i=1,s++,m>m[k]?m<h?n=m,t=i,k=i,i=1:++i,s+1<=num:++i,s+1<=num:m>m[k]?m<h?n=m,t=i,k=i,i=1:++i,s+1<=num:++i,s+1<=num);

cout << " r=" << r << " H=" << h << endl;
}




хотя есть глюк :) при num > 5. Кто сможет сказать какой? :)

как нить в следующий раз исправлю...
3
11 июля 2007 года
Green
4.8K / / 20.01.2000
Цитата: barracuda
прочтешь пятерку с плюсом получишь :)
а вот код для любого num при (0 < num < mas)

Код:
#define min -1000
#define max  1000
#define mas 10
#define num 3


void main()
{
int m[mas] = {1, 6, 7, -51, -10, -16, 71, 53, 11, -13};
int i=1, k=0, n=min, h=max, s=0, r=0, t=0;

while(i+1==mas&&n<h?h=n,r=t,k=0,i=1,s++,m>m[k]?m<h?n=m,t=i,k=i,i=1:++i,s+1<=num:++i,s+1<=num:m>m[k]?m<h?n=m,t=i,k=i,i=1:++i,s+1<=num:++i,s+1<=num);

cout << " r=" << r << " H=" << h << endl;
}




хотя есть глюк :) при num > 5. Кто сможет сказать какой? :)

как нить в следующий раз исправлю...


Я за такой код не оценки бы ставил, а руки отрывал... за ненадобностью, т.к. такой код пишут тем, что не из плеч растет.
Кроме того программа нерабочая. Попробуй поменять 11 и 71 местами.

2.7K
12 июля 2007 года
barracuda
76 / / 29.03.2004
Цитата: Green
Я за такой код не оценки бы ставил, а руки отрывал... за ненадобностью, т.к. такой код пишут тем, что не из плеч растет.
Кроме того программа нерабочая. Попробуй поменять 11 и 71 местами.



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

исправил глюк, работает при любом масиве и любом num:

Код:
#define min -1000
#define max  1000
#define mas 10
#define num 3

void main()
{
long m[mas] = {1, 6, 7, -51, -10, -16, 71, 53, 11, -13};
long i=-1, k=-1, r=-1, t=-1, s=0;

while(i!=-1&&i==mas&&(t==-1?min:m[t])<(r==-1?max:m[r])?r=t,k=-1,i=-1,s++:(i==-1?min:m)>(k==-1?min:m[k])?(i==-1?min:m)<(t==-1?max:m[r])?t=i,k=i,i=-1:++i,s+1<=num:++i,s+1<=num);
cout << num << ":" << " r=" << r << " m[r]=" << m[r] << endl;

}
3
12 июля 2007 года
Green
4.8K / / 20.01.2000
Цитата: barracuda
И чем тебе такой код не нравится? Тем, что ты его прочитать не можешь? Тогда грош тебе цена как программисту.


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

Цитата: barracuda

И кстати - менял 11 и 71, все работает,



Цитата: barracuda

глюк как я уже сказал, имеется, но в другом плане, и ты не смог его найти.


А я его в этой помойке, что ты называешь "кодом", и не искал. Подобный мусор даже трогать не хочется.

Цитата: barracuda

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


ДумаТьвтвОемпонИМаниизАклЮчаетСяВрасшиФровкЕкараКуль?
Тогда спешу тебя разочаровать: совсем не в этом работа программиста.

Цитата: barracuda

И кста, существуют конкурсы по написанию однострочных алгоритмов.
И этот далеко не самый сложный, я видел строку в несколько сотен символов.


А ещё есть конкурсы на пожирание гамбургеров на скорость, плевков на расстояние, кто громче освободит кишечник... много разных конкурсов есть...

Цитата: barracuda

исправил глюк, работает при любом масиве и любом num:
Код:
#define min -1000
#define max  1000
#define mas 10
#define num 3

void main()
{
long m[mas] = {1, 6, 7, -51, -10, -16, 71, 53, 11, -13};
long i=-1, k=-1, r=-1, t=-1, s=0;

while(i!=-1&&i==mas&&(t==-1?min:m[t])<(r==-1?max:m[r])?r=t,k=-1,i=-1,s++:(i==-1?min:m)>(k==-1?min:m[k])?(i==-1?min:m)<(t==-1?max:m[r])?t=i,k=i,i=-1:++i,s+1<=num:++i,s+1<=num);
cout << num << ":" << " r=" << r << " m[r]=" << m[r] << endl;

}


Ага, и про этому выдает ответ -13 ?

2.7K
12 июля 2007 года
barracuda
76 / / 29.03.2004
выброси свой компилятор
в атаче рабочий код и рабочая прога
2.7K
12 июля 2007 года
barracuda
76 / / 29.03.2004
Цитата: Green
А ещё есть конкурсы на пожирание гамбургеров на скорость, плевков на расстояние, кто громче освободит кишечник... много разных конкурсов есть...



Да, есть, только в отличии от мною названого после этих конкурсов победителей не приглашают на должность ведущего программиста за 5000-15000$

263
12 июля 2007 года
koltaviy
816 / / 16.12.2004
Т.е. ты в каком-то конкурсе выйграл?? На самый нечитаемый код? И тебе за это теперь платят? :D Круто!! Тоже так хочу!!
А если серьезно: почитай любую статью для начинающих аля "Как правильно оформлять программный код" - и все вопросы отпадут. Там же кстати разъяснено почему надо оформлять код именно так, а не иначе..
Удачи с "должностью" :D
2.7K
12 июля 2007 года
barracuda
76 / / 29.03.2004
Цитата: koltaviy
Т.е. ты в каком-то конкурсе выйграл?? На самый нечитаемый код? И тебе за это теперь платят? :D Круто!! Тоже так хочу!!
А если серьезно: почитай любую статью для начинающих аля "Как правильно оформлять программный код" - и все вопросы отпадут. Там же кстати разъяснено почему надо оформлять код именно так, а не иначе..
Удачи с "должностью" :D



скажем так я и есть ведущий

тот же самый код только для ленивых:

Код:
using System;
using System.Collections.Generic;
using System.Text;

namespace a
{
    class Program
    {
        static void Main(string[] args)
        {

            const int min = -1000;
            const int max = 1000;
            const int mas = 10;
            const int num = 3;

            long[] m = new long[mas] {1, 6, 7, -51, -10, -16, 71, 53, 11, -13};
            long
                i = -1,
                k = -1,
                r = -1,
                t = -1,
                s = 0;

            while (s + 1 <= num)
            {
                long t1;
                long r1;

                if (t == -1) t1 = min;
                else t1 = m[t];

                if (r == -1) r1 = max;
                else r1 = m[r];


                if (i == mas && t1 < r1)
                {
                    r = t;
                    k = -1;
                    i = -1;
                    s++;
                }
                else
                {

                    long i1;
                    long k1;
                    long tr;

                    if (i == -1) i1 = min;
                    else i1 = m;

                    if (k == -1) k1 = min;
                    else k1 = m[k];

                    if (r == -1) tr = max;
                    else tr = m[r];

                    if (i1 > k1)
                    {
                        if (i1 < tr)
                        {
                            t = i;
                            k = i;
                            i = -1;
                        }
                        else
                        {
                            ++i;
                        }

                    }
                    else
                    {
                        ++i;
                    }


                }
            }
            Console.WriteLine("Индекс максимального элемента= " + r + " Максимальный элемент= " + m[r]);
        }
    }
}
3
12 июля 2007 года
Green
4.8K / / 20.01.2000
Цитата: barracuda
выброси свой компилятор
в атаче рабочий код и рабочая прога


Да нет, не рабочая программа.
Поэтому, прокоментирую твою предыдущую версию.

Расшифровываем твое однострочие.
И так, ты перебираешь массив столько раз, какое наибольшее число надо найти. Т.о. у тебя два цикла: один считает порядок наибольшего числа, другой - делает пробежку по циклу на поиск наибольшего меньше заданого. При этом при нахождении локального максимума ты заново начинаешь проход по массиву. Этого делать совершенно не надо. Кроме того, ты заводишь совершенно не нужные переменные, твкаие как t и n.
В результате твой код рефакториться к следующему:

Код:
#define max  1000
#define mas 10
#define num 3

int main()
{
    int m[mas] = {1, 71, 6, -51, -10, -16, 7, 11, 53, -13};
    int prevMax = max;
    int curMaxIndex;

    for(int s = 0; s < num; s++) {
        curMaxIndex = 0;
        for(int i=1; i < mas; i++) {
            if(m>m[curMaxIndex] && m< prevMax) {
                curMaxIndex = i;
            }
        }
        prevMax = m[curMaxIndex];
    }

    cout << " r=" << curMaxIndex << " H=" << m[curMaxIndex] << endl;

    return 0;
}

Кстати, твой глюк ушел автоматически лишь за счет аккцратности кода.

Но т.к. это magic number 1000 режит глаза, избавляемся от него:
Код:
int main()
{
    const int num = 3;
    int m[] = {1, 71, 6, -51, -10, -16, 7, 11, 53, -13};
    int prevMax;
    int curMaxIndex = 0;
   
    for(int i=1; i < sizeof(m)/sizeof(m[0]); i++) {
        if( m>m[curMaxIndex] ) {
            curMaxIndex = i;
        }
    }    

    for(int s = 1; s < num; s++) {
        prevMax = m[curMaxIndex];
        curMaxIndex = 0;
        for(int i=1; i < sizeof(m)/sizeof(m[0]); i++) {
            if(m>m[curMaxIndex] && m<prevMax) {
                curMaxIndex = i;
            }
        }
    }

    cout << " r=" << curMaxIndex << " H=" << m[curMaxIndex] << endl;

    return 0;
}


Теперь об оптимальности.
Такой вариант будкт в общем случае выполняться за O(n*m), где n - номер наибольшего, m - размерность массива.
Вариант с сортировкой массива будет работать за O(m*log m). Т.о. вариант с сортировкой будет быстрее при n > log m.

Но существует ещё (как минимум) один вариант: можно попробовать сортировать не исходный массив, а массив наибольших значений непосредственно при его формировании.
3
12 июля 2007 года
Green
4.8K / / 20.01.2000
Цитата: barracuda
скажем так я и есть ведущий


Сомневаюсь.
Либо ты пишешь другой код, либо вы работаете над сверх секретным проектом, где главное не закончить качественно проект, а запутать противника.

В любом случае, ни после конкурса на самый нечитабельный код, ни после какого-либо другого подобного совершенно неприменимого на практике конкурса я бы человека на работу не взял. А тем более представившего такую помойку. Да ещё и на роль ведущего, где главное не код "колбасить", а доходчиво управлять и контролировать.

P.S. 15000 - это в год или в месяц? :D

2.7K
12 июля 2007 года
barracuda
76 / / 29.03.2004
попробуй свои алгоритмы с num > 6
3
12 июля 2007 года
Green
4.8K / / 20.01.2000
Цитата: barracuda
попробуй свои алгоритмы с num > 6


Да, согласен, косяк оставшийся от твоего кода.
Но он легко исправляется в моем коде:

Код:
int main()
{
    const int num = 9;
    int m[] = {1, 71, 6, -51, -10, -16, 7, 11, 53, -13};
    int prevMax;
    int indexCurMax = 0;
    int indexMin = 0;

    for(int i=1; i < sizeof(m)/sizeof(m[0]); i++) {
        if( m > m[indexCurMax] ) {
            indexCurMax = i;
        } else if( m < m[indexMin] ) {
            indexMin = i;
        }
    }    

    for(int s = 1; s < num; s++) {
        prevMax = m[indexCurMax];
        indexCurMax = indexMin;
        for(int i=0; i < sizeof(m)/sizeof(m[0]); i++) {
            if( m > m[indexCurMax] && m < prevMax ) {
                indexCurMax = i;
            }
        }
    }

    cout << " r=" << indexCurMax << " H=" << m[indexCurMax] << endl;

    return 0;
}
2.7K
12 июля 2007 года
barracuda
76 / / 29.03.2004
Именно про этот косяк я и говорил вчера, но исправлять вчера некогда было, кроме этого нашел и другой касяк

ЗЫЖ Ты написал фактически тоже самое, но в другом исполнении
3
12 июля 2007 года
Green
4.8K / / 20.01.2000
Цитата: barracuda

ЗЫЖ Ты написал фактически тоже самое, но в другом исполнении


Именно! Я написал то же самое, но значительно проще и понятнее.
Кроме того, несколько оптимальнее и работоспособнее на бОльших диапазонах входных данных.

2.7K
12 июля 2007 года
barracuda
76 / / 29.03.2004
Диапазоны я проверял разные. Оптимальность? Не уверен, во многом зависит от компилятора
На счет понятности - я легко читаю любой код
3
12 июля 2007 года
Green
4.8K / / 20.01.2000
Цитата: barracuda
Диапазоны я проверял разные.


И даже такие?
int m[] = {1001, 71, 6, -51, -1001, -16, 7, 11, 53, -13};

Цитата: barracuda

Оптимальность? Не уверен, во многом зависит от компилятора


:D
Слушай, "ведущий", не смеши. При чем тут компиляторы? Я говорю о лишних итерациях.

Цитата: barracuda

На счет понятности - я легко читаю любой код


Опять врешь... ну да ладно.
А остальные тоже легко читают твой код?
Или ты сам себе ведущий? :)

2.7K
12 июля 2007 года
barracuda
76 / / 29.03.2004
Цитата: Green
И даже такие?
int m[] = {1001, 71, 6, -51, -1001, -16, 7, 11, 53, -13};
:D


В условии четко сказано по модулю 1000, потому если ты заметил то мах и мин находятся в дефайне, и цели унлимитед я не ставил, с небольшой доработкой код будет работать с любыми числами с любыми массивами


Цитата: Green
Слушай, "ведущий", не смеши. При чем тут компиляторы? Я говорю о лишних итерациях.

Итераций у нас одинаковое количество, можешь посчитать. А вот for и while имеют немного разный вид в асме


Цитата: Green
Опять врешь... ну да ладно.
А остальные тоже легко читают твой код?
Или ты сам себе ведущий? :)


Ну вру или нет - ты же не проверишь
Да, легко
Более того, я не возьму специалиста неспособного прочитать чужой код, хоть даже если он будет записан на салфетке от руки

Кроме того, мой пример дает новичкам некоторое представление об особенностях Си (которые обычно в учебниках не указываются), а так же представление о приоритетах операторов

2.7K
12 июля 2007 года
barracuda
76 / / 29.03.2004
Извини, cоврал про количество итераций, у меня много больше
2.7K
12 июля 2007 года
barracuda
76 / / 29.03.2004
Исправил
Теперь количество итераций одинаково
Код:
#define min -1000
#define max  1000
#define mas 10
#define num 3


void main()
{
long m[mas] = {1, 6, 7, -51, -10, -16, 71, 53, 11, -13};
long i=0, k=-1, r=-1, t=-1, s=0, q=0;

while(
    m > (k==-1?min:m[k])?
        m < (r==-1?max:m[r])?
            t = i,
            k = i,
            ++i
        :++i
    :++i,
    i == mas && (t==-1?min:m[t]) < (r==-1?max:m[r])?
        r = t,
        k = -1,
        i = 0,
        s++,
        s + 1 <= num
    :s + 1 <= num
)q++;

cout << "q=" << q << " r=" << r << " m[r]=" << m[r] << endl;
}
263
12 июля 2007 года
koltaviy
816 / / 16.12.2004
Народ, посмотрите на название темы!!
Решение задачи обсуждается в другой теме!!
В любом случае, последний предложенный код barracuda по прежнему ужасен с точки зрения читабельности!!
Хотя замечу, что он научился пользоваться кнопочкой Enter. :D
2.7K
12 июля 2007 года
barracuda
76 / / 29.03.2004
Не не научился, это был ctrl+ins и shift+ins
255
12 июля 2007 года
Dart Bobr
1.4K / / 09.04.2004
Народ, пишите на брейнфаке.. Если barracuda и код на этом языке "легко читает", то мне больше нечего сказать. =)
З.Ы. Когда я писал еще в лицее на паскале - у меня раз был глюк компилера - програмка не компилилась - хотя должна была. После того как я красиво оформил код - повыравнивал и забрал лишние пробелы все заработало.) Так что лично я для себя оешил код писать нормально =)
3
13 июля 2007 года
Green
4.8K / / 20.01.2000
Цитата: barracuda

Кроме того, мой пример дает новичкам некоторое представление об особенностях Си (которые обычно в учебниках не указываются), а так же представление о приоритетах операторов


Вообще-то, ты пытаешься использовать С++, а не С.
И какие это такие особенности? :)

Цитата: barracuda

Да, легко
Более того, я не возьму специалиста неспособного прочитать чужой код, хоть даже если он будет записан на салфетке от руки


Одно дело уметь читать код, а другое уметь писать понятный код. Писать понятный код - куда более практичный навык и куда более сложный в освоении.
У тебя явно смещены приоритеты и понятия о "крутости".
Для меня хороший код - тот, который не затрудняет сам по себе понимание алгоритма. Представленный тобой код совершенно не подходит под это условие.
В программировании (в настоящем, серьезном программировании) есть задачи куда более сложные, чем приоритеты выполнения операций. Для таких мелочей есть скобки.
Сложность программирования не в сложности написания кода, а в сложности выбора и реализации алгоритма. Код должен писАться не сложнее чем вращение педалей велосипеда и внешне он должен быть не сложнее, чем этот велосипед.
Код пишется для человека, а не для машины, и он должен помогать воспринимать алгоритм, а не создавать лишних помех.

Что касается "особенностей языка", то сложность и красота С++ не в записи в одну строку. Огромное количество механизмов на столько сложны, что только корректное их описание (именно описание а не колбасерство кода) делает возможным их понимание.

Вот тебе пример, на самам деле, простенького кода.
Что делает этот код (это совсем не сложно), и как он это делает (это посложнее)?
Сможешь рассказать прямо "с листа", не форматируя этот код?
Я его немного заобсифуцировал, как ты любишь. :)

Код:
#include <iostream>
using namespace std;

template<int>struct b{};typedef b<1>f;
struct r{};struct a{template<class T>a(T const&);};r operator<<(a const&,a const&);
template<class T,class U>struct sh{static char c(r);static int c(...);typedef b<sizeof(c(*(T*)0<<*(U*)0))>r;};
template<class T,class U>ostream&pp(ostream&s,T const&v,U){return s<<v<<endl;}
template<class T>ostream&pp(ostream&s,T const&,f){return s<<"unknown"<<endl;}
template<class T>ostream&p(ostream&s,T const&t){return pp(s,t,sh<ostream,T>::r());}

struct n{};

int main() {
    p(cout, 1);
    p(cout, "Hello");
    p(cout, n());
    return 0;
}
260
13 июля 2007 года
Ramon
1.1K / / 16.08.2003
Цитата:

Код:
#define min -1000
#define mas 10
#define num 3


void main()
{
int m[mas] = {1, 6, 7, -51, -10, -16, 71, 53, 11, -13};
int i=1, k=0;
int n[num]= {min, min, min};

while(m>m[k]?n[0]=m,k=i,i=1:m>n[1]&&m<n[0]?n[1]=m,++i<mas:m>n[2]&&m<n[1]?n[2]=m,k=i,++i<mas:++i<mas);

cout << k << " - " << n[num];

}



Аффтар жжешь, пеши есчо, токо желательно на просторах интернета, а не в реальных проектах:D

PS: Обфускаторы отдыхают:D

2.7K
13 июля 2007 года
barracuda
76 / / 29.03.2004
Green
Обещаю без форматирования :)
но не сегодня, сегодня у нас пьянка, день металурга... :)
2.7K
16 июля 2007 года
barracuda
76 / / 29.03.2004
Green
Ну конечно замудрил ты
В итоге ты всего лишь, определил вывод в cout в зависимости есть ли у типа свой оператор << , только лиш и всего, для типов не имеющих этого оператора ты опеределяешь его сам, и выводишь unknown (так как возвращаешь sizeof(static char c(r))) = 1. Но не буду скрывать что текст я парсировал. Но не потому что не понятен был, а потому что с темплетами не работаю.

PS а в воскресенье куда темы исчезали?
2.7K
16 июля 2007 года
barracuda
76 / / 29.03.2004
Цитата: Ramon
Аффтар жжешь, пеши есчо, токо желательно на просторах интернета, а не в реальных проектах:D

PS: Обфускаторы отдыхают:D



Просторы Интернета говоришь? А хочешь покажу тебе проект (очь не маленький) где все исходники именно такие? Сможешь ответить, почему там сдалано именно так?
http://www.domapi.com/index.cfm?action=download

308
16 июля 2007 года
Комаджу
850 / / 26.07.2006
Цитата: barracuda
Просторы Интернета говоришь? А хочешь покажу тебе проект (очь не маленький) где все исходники именно такие? Сможешь ответить, почему там сдалано именно так?
http://www.domapi.com/index.cfm?action=download



Чтобы снизить читаемость кода?

http://ru.wikipedia.org/wiki/Исходный_код

Цитата:
О качестве исходного кода можно говорить в контексте следующих параметров:
- читаемость кода
- лёгкость в поддержке, тестировании, отладке и устранении ошибок, модификации и портировании
- низкая сложность
- низкое использование ресурсов — памяти, процессора, дискового пространства
- отсутствие замечаний при компиляции программы



И чоа это за проект? Неужели десятки тысяч разработчиков используют этот DomAPI? Ты бы еще показал код Вовы Пукина, который контрольную сваял на первом курсе ЭВМ.

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

Эх... *махнул рукой и ушел разбирать коды предшественников*

2.7K
16 июля 2007 года
barracuda
76 / / 29.03.2004
Нет, смысл не в этом.
Смысл "читабельности" того проекта в том чтобы Вова Пупкин как можно меньше качал из инета "пробелов, табуляторов, переводов строк"
О тебе как о пользователе заботятся....

И это не единственный подобный проект.
308
16 июля 2007 года
Комаджу
850 / / 26.07.2006
Да? И насколько отсутствие пробелов сокращает код? Процентно?

Тема миллион раз мусолилась в контексте html-кода - вот уж где действительно можно думать об экономии. Ну, и кто экономит? Загляните в код серьезного сайта, который посещается мильёнами людей в день - там всё ровно и красиво. И загляните в код какого-нибудь "хомяка", который никто в жизни не видел, но у которого весь код в одну строчку - "чтобы пользователи меньше качали".

И потом, судя по этой и предыдущей теме - если бы вы занимались не удалением пробелов, а серьезной оптимизацией своего кода, то пользователи действительно качали бы меньше.
2.7K
16 июля 2007 года
barracuda
76 / / 29.03.2004
На вскидку, расставил только перевод строки... +10%
При весе всей библиотеки src d 700 kb это плюсом 70 kb
Прибавь по 10% пробелов И табуляторов&#8230;

И при том что тема не раз мусолилась почему то везде где только можно применяют упаковщики.
То что "серьезные сайты" не оптимизируют код - это личное их отношение, и только.
Я оплачиваю каждый байт, так нафига мне оплачивать пробелы? Браузер их все равно не выведет.
308
16 июля 2007 года
Комаджу
850 / / 26.07.2006
Цитата: barracuda
И при том что тема не раз мусолилась почему то везде где только можно применяют упаковщики.

Вы сильно преувеличивате.

Цитата: barracuda
То что "серьезные сайты" не оптимизируют код - это личное их отношение, и только.

Так же как выдавать нечитаемый код за шедевр - ваше личное отношение.

Цитата: barracuda
Я оплачиваю каждый байт, так нафига мне оплачивать пробелы? Браузер их все равно не выведет.

Мне Вас искренне жаль, Ваша жизнь значительно печальнее моей. Я больше не буду спорить с Вами, извините. Я не знал.

2.7K
16 июля 2007 года
barracuda
76 / / 29.03.2004
Да пожалуйста...
1.9K
16 июля 2007 года
InterWen
331 / / 16.09.2006
Извольте, в таком случае давайте и на содНете, чтобы "пользователи меньше качали", попросим Майка
убиратькчертовойматериВСЕпробелыизтекстапризаписивбазу.
А что, оригинально?
Я бы НИКОГДА, не то что бы не взял на работу человека не способного читать подобный текст, что свидетельствовало бы о его низком коэффициенте IQ, [COLOR="Gray"](да, задачка реально для третего класса на соображаловку и отлов "особо одаренных" - найдите в "каше" букв последовательности формирующие слова)[/COLOR], я бы с ним не стал даже общаться :rolleyes:


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


[QUOTE barracuda;202106]проект (очь не маленький) где все исходники именно такие? Сможешь ответить, почему там сдалано именно так? http://www.domapi.com/index.cfm?action=download[/QUOTE]

ВСЕ исходники? Именно ТАКИЕ?
Простите, а вы лично принимали участие в разработке и сможете подтвердить наличие/отсутствие общего документа описывающего именно ТАКОЙ стиль написания кода?
Лично я не стал бы отрицать его существования.


Теперь все сводится лишь к тому, что на данном форуме в правилах не указано НИКАКИХ требований к написанию самого кода, упоминается лишь о необходимости использования тегов форматирования. [COLOR="Gray"]Поправьте, если ошибаюсь.[/COLOR]
Говорит ли это о возможности выбора random стиля, или все же не стоит забывать об элементарном уважении, к тем, возможно даже новичкам, кто будет читать ваш код?
3
16 июля 2007 года
Green
4.8K / / 20.01.2000
Цитата: barracuda
Green
Ну конечно замудрил ты
В итоге ты всего лишь, определил вывод в cout в зависимости есть ли у типа свой оператор << , только лиш и всего, для типов не имеющих этого оператора ты опеределяешь его сам, и выводишь unknown (так как возвращаешь sizeof(static char c(r))) = 1. Но не буду скрывать что текст я парсировал. Но не потому что не понятен был, а потому что с темплетами не работаю.

PS а в воскресенье куда темы исчезали?


Что делает код ты в принципе определил правильно (а может и нет, т.к. до конца не разобрался), но вот как он это делает ты не понял, либо не расскрыл.

Намудрил? Реализуй подобную функциональность иначе. Посмотрим, кто намудрил.

P.S. Куда я возвращаю sizeof? :) Ничего я не возвращаю... Это compiled-time код.

3
16 июля 2007 года
Green
4.8K / / 20.01.2000
Цитата: barracuda
Нет, смысл не в этом.
Смысл "читабельности" того проекта в том чтобы Вова Пупкин как можно меньше качал из инета "пробелов, табуляторов, переводов строк"
О тебе как о пользователе заботятся....


:D :D :D
Я стараюсь редко быть таким критичным, но тут просто не удержаться: Ну и бред!!!

2.7K
17 июля 2007 года
barracuda
76 / / 29.03.2004
Цитата: Green
Что делает код ты в принципе определил правильно (а может и нет, т.к. до конца не разобрался), но вот как он это делает ты не понял, либо не расскрыл.

Намудрил? Реализуй подобную функциональность иначе. Посмотрим, кто намудрил.

P.S. Куда я возвращаю sizeof? :) Ничего я не возвращаю... Это compiled-time код.



Ну извини что не сказал все это формируется во время компиляции
Первое что я сделал это откомпилил, и увидел результат. Далее увидел два темплета pp() у которых третий параметр разный, более того в теле pp() третий параметр не используется, но вызов pp(s,t... происходит в разные темплеты, далее просто, если поити по коду то вызов sh<ostream,T>::r() вернет b<1> или b<4>
b<1> у тебя определен как тип f
Теперь более определенно рассказал код? Или еще рассказать почему sh<ostream,T>::r() возвращает разные типы?

Прежде чем отвечать я проверил, добавил перед вызовом pp()
s << sizeof(sh<ostream,T>::c(s << t)) << " ";

2.7K
17 июля 2007 года
barracuda
76 / / 29.03.2004
Да, в каждой организации есть свои правила. И каждый сотрудник этой организации обязан их выполнять. И того же требую и я от своих сотрудников.
Но есть не мало старых проектов, которые мы поддерживаем в рабочем состоянии. Которые написаны еще похлеще чем предлагал я. И разбираться в них нам приходится. И ничего страшного в этом я не вижу. Есть программы, которые собирались буквально на коленях, так как работаем мы на производстве, где тормозить процесс невозможно. Потому дыры латались, не останавливая основных модулей.
Да, в результате образовывается некий бардак, но в ходе последующей работы заплатки вылизываются. Но так как они все же присутствуют их приходится разгребать. И разгребать и вылизывать приходится на рабочем объекте.

Вы меня не убедили, почему начинающим программистам нельзя задавать задачки на тот же &#171;читабельность кода&#187;
У меня побывало не мало программистов после вышки, бьющих себя в грудь что они взламывали пентагон, но достаточно поставить перед ним задачу &#8211; разобрать завал кода, как тут же он скисает.
Лично сам я начинал с машинных кодов Z80, когда компиляторов днем согнем не сыщешь. И ничего &#8211; разгребал.

Предлагаю тему закрыть
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог