Модераторы: Се ля ви

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> А можно без классов? 
:(
    Опции темы
slavaentp
Дата 18.9.2008, 19:39 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Цитата(kosmonaFFFt @ 18.9.2008,  19:34)
Цитата(slavaentp @  18.9.2008,  19:30 Найти цитируемый пост)
Неужто так сложно разобраться в чужом коде, если автор его намеренно что-то там не скрывал?


Сам несколько раз пытался разобраться в чужом кривоватом коде
(например все имена переменных в стиле a, aa, ttt, d, v, tt и т. д. и тут даже имеющиеся в обилии коменты не спасали)
, забивал и писал сам. smile

Но сделал же в итогеsmile Работодателю по идее должно быть всё равно - при любом варианте он имеет работающую програму.
PM MAIL   Вверх
kosmonaFFFt
Дата 18.9.2008, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Цитата(slavaentp @  18.9.2008,  19:30 Найти цитируемый пост)
Ибо если "надо сделать программу, чтобы работала" - это я могу сделатьА если нужно думать каждую секунду думать "Ой, как написать? Класс? Функцию? Или просто код?" - то тогда вряд ли, ибо для меня ответ(хотя бы по умолчанию) всегда - "просто код":)


Я например "просто код" всегда разбиваю на классы+методы/функции ибо мне так например легче.
Разбил задачу на более мелкие - написал и протестировал каждую, потом соединил и все работает. smile
А потом, если что-то аналогичное потребуется (да хоть те же матрицы с их умножением,а они у меня в отдельном классе)
взял, скопировал/унаследовал+дописал и можно юзать.

Добавлено через 2 минуты и 54 секунды
Цитата(slavaentp @  18.9.2008,  19:39 Найти цитируемый пост)
Но сделал же в итоге Работодателю по идее должно быть всё равно - при любом варианте он имеет работающую програму.


Не, эт я по учебе схалявить хотел и готовый курсак переделать. В итоге убил время на попытку в нем разобраться. smile


--------------------
user posted image
PM MAIL ICQ   Вверх
slavaentp
Дата 18.9.2008, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Цитата(kosmonaFFFt @ 18.9.2008,  19:41)
Цитата(slavaentp @  18.9.2008,  19:30 Найти цитируемый пост)
Ибо если "надо сделать программу, чтобы работала" - это я могу сделатьА если нужно думать каждую секунду думать "Ой, как написать? Класс? Функцию? Или просто код?" - то тогда вряд ли, ибо для меня ответ(хотя бы по умолчанию) всегда - "просто код":)


Я например "просто код" всегда разбиваю на классы+методы/функции ибо мне так например легче.

Не спорю, у разных людей разные предпочтения.

Я же, например, классы, функции, переменные буду избегать всегда, когда это только возможно, вот мне и интересно, оплачивается ли такой подход в программированииsmile
PM MAIL   Вверх
kosmonaFFFt
Дата 18.9.2008, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Цитата(slavaentp @  18.9.2008,  19:46 Найти цитируемый пост)
оплачивается ли такой подход в программировании

ИМХО нет.
Думаю что если бы оплачивался, то ООП не возникло бы smile



--------------------
user posted image
PM MAIL ICQ   Вверх
Mayk
Дата 18.9.2008, 20:32 (ссылка) |    (голосов:9) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: нет
Всего: 134



Цитата(slavaentp @  18.9.2008,  23:08 Найти цитируемый пост)
Если программа работает, если цель ДОСТИГНУТА полностью - значит задача выполнена

Абсолютно не верный вывод. После ввода программы в эксплуатацию требуется её активная поддержка для добавления фич и устранения багов. 
Цитата(slavaentp @  18.9.2008,  23:08 Найти цитируемый пост)
Поставлена задача(в т.ч. и мной самим перед собой) - я написал код, который её решил - значит всё выполнено ИДЕАЛЬНО и ОПТИМАЛЬНО.

соответсвенно это тоже не верно, ну и всё последующее.

Это сообщение отредактировал(а) Mayk - 18.9.2008, 20:34


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Shaggie
Дата 18.9.2008, 20:40 (ссылка) |    (голосов:7) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(slavaentp @  18.9.2008,  20:08 Найти цитируемый пост)
Я - человек, ориентированный на результат. Если программа работает, если цель ДОСТИГНУТА полностью - значит задача выполнена.

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

Цитата(slavaentp @  18.9.2008,  20:08 Найти цитируемый пост)

Если из-за неоптимизированности кода возникнут проблемы - вот тогда их и будем решать, когда возникнут. Поставим отдельную задачу и решим её.

Умоляю тебя! В данный момент я - жертва такого программиста. Не бывает задачи "неоптимизированность кода". Бывает задача "эй вы, парни, нам надо вот такую фишку сделать и тут поменять", и в решении задачи ты сотни, тысячи раз обматеришь предшественника, поменяешь всё до чего дотянешься (или, что случается чаще, примешь как есть. Нет времени всё переписывать). Ура - задача (не скажу какой ценой) решена, можно перестать ругаться на заплатанный код. Думаешь, какая задача встанет следующей? Правильно! "Вот вылез баг, вот здесь плюшечку, и мы тут с бухгалтерией подумали, что надо вот этот момент по-другому вычислять...", но задачи оптимизации тебе в жизни никогда не поставят. И даже если выбьешь с начальника время на таковую, что теперь уже можно поменять? Только переписать всё целиком.

Чем дальше, тем больше заплатанным становится код. Изменение одной его части влечёт совершенно непредсказуемые для всей программы последствия. Автоматизированные тесты навесить на это разваливающееся и подпёртое костылями чудо невозможно, и тестирование превращается в каторгу. Представь теперь, какое количество иголок будет втыкаться в твою восковую фигуру - нужна такая тяжесть на карме?

Цитата(slavaentp @  18.9.2008,  20:46 Найти цитируемый пост)

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

Эй, на чём-то придётся остановиться! Ни классов, ни функций, ни переменных - так не бывает, хотя бы что-то одно придётся использовать, причём это одно наверняка окажется функциями  smile 

Диагноз - повышенное оптимизаторство, плавали - знаем, сам с ассемблера начинал. Жизнь заставит - всё полюбишь. И функции (за что на них-то взъелся?), и классы (с опытом поймёшь, как их юзать). И даже переменные. Всё хорошо, когда растёт на своём месте.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
slavaentp
Дата 19.9.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Цитата(Shaggie @ 18.9.2008,  20:40)
функции (за что на них-то взъелся?)

Зачем:

function superkod($a, $b){

echo $a+$b;

}

superkod(3+1);

если можно:

echo 3+1;

Это сообщение отредактировал(а) slavaentp - 19.9.2008, 15:18
PM MAIL   Вверх
kosmonaFFFt
Дата 19.9.2008, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Цитата(slavaentp @  19.9.2008,  15:18 Найти цитируемый пост)
Зачем:function superkod($a, $b){echo $a+$b;}superkod(3+1);если можно:echo 3+1;


А представь себе, что там не echo $a + $b, а около 40 строк кода, который делает что то с этими самыми переменными
а в программе это делать с ними надо часто. И тут появляется выбор - функция или копирование кода через
Ctrl+C, Ctrl+V (или как там у кого хоткеи настроены) smile
Я лично предпочитаю в такой ситуации написать функцию.


--------------------
user posted image
PM MAIL ICQ   Вверх
slavaentp
Дата 19.9.2008, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Цитата(kosmonaFFFt @ 19.9.2008,  15:59)
Цитата(slavaentp @  19.9.2008,  15:18 Найти цитируемый пост)
Зачем:function superkod($a, $b){echo $a+$b;}superkod(3+1);если можно:echo 3+1;


А представь себе, что там не echo $a + $b, а около 40 строк кода, который делает что то с этими самыми переменными
а в программе это делать с ними надо часто. И тут появляется выбор - функция или копирование кода через
Ctrl+C, Ctrl+V (или как там у кого хоткеи настроены) smile
Я лично предпочитаю в такой ситуации написать функцию.

Чем "goto" не устраивает?

PM MAIL   Вверх
Shaggie
Дата 19.9.2008, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(slavaentp @  19.9.2008,  16:18 Найти цитируемый пост)

function superkod($a, $b){

echo $a+$b;

}

Действительно отстой. Название superkod не говорит совершенно ни о чём. Функция обладает побочным эффектом, заключающимся в использовании echo. Ну её такую нафиг!


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
smartov
Дата 19.9.2008, 17:26 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



slavaentp, тролль нехороший smile Но зато живая беседа.

Начнем, полжалуй, с функций.
Чтобы пример был нагляднее, возмем матрицу.
Нам нужно посчитать детерминант матрицы. Возьми матрицу 5x5 и попробуй написать код для рассчета ее детерминанта без функций. 
А теперь представь что матрица не 5х5, а вообще произвольного размера - как пользователь задаст.
Это тоже можно написать без функций. И даже будет работать, но код будет во много раз длиннее, а читать этот код будет нереально. Следовательно поддержка программы сводится к нулю.
Итого: больше потраченного времени программиста, программа занимает больше места, большее количество кода увеличивает шанс человеческой ошибки (скрытые баги), поддержку программы осуществлять трудно.

Вообще: большинство из того, что сделано - функции, классы и т.п. - сделано для упрощения поддержки и развития программы.

Это сообщение отредактировал(а) smartov - 19.9.2008, 17:28
PM MAIL   Вверх
Shaggie
Дата 19.9.2008, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(slavaentp @  19.9.2008,  17:23 Найти цитируемый пост)
Чем "goto" не устраивает?

Истории много лет, не одна сотня копий разбита в боях. Поисковики в помощь.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
kosmonaFFFt
Дата 22.9.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Цитата(slavaentp @  19.9.2008,  16:23 Найти цитируемый пост)
Чем "goto" не устраивает?

Хорошо, а теперь взять те же матрицы и их умножение (недавно сам делал):
как с помощью goto реализовать умножение двух произвольных матриц?
мне это представляется возможным только так:
Код

начало_умножения:
    тут идет умножение матрицы А на Б и результат записывается в С;
    switch (куда_идти)
    {
        case 1: goto куданибудь1;
        ...
        case n: goto куданибудьn;
    }

//А тут понадобилось умножить 2 матрицы
А = ... //Инициализация А
Б = ... //Инициализация Б
куда_идти = 1;
goto начало_умножения;
куданибудь1:
    //В итоге в С оказывается результат.

//А где то здесь тоже надо умножить матрицы. И где нибудь ниже тоже.


А теперь с функциями (даже без классов):
Код

Матрица УмножитьМатрицы(Матрица м1, Матрица м2)
{
    //Тут умножение и возврат результата.
}

//Тут понадобилось умножение.
Матрица С = УмножитьМатрицы(А, Б);

//И здесь и ниже так-же.
Матрица СN = УмножитьМатрицы(АN, БN);


И какой же вариант более простой и легчечитаемый? smile

Это сообщение отредактировал(а) kosmonaFFFt - 22.9.2008, 18:42


--------------------
user posted image
PM MAIL ICQ   Вверх
ne0n
Дата 22.9.2008, 19:34 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: нет
Всего: 11



Нет, я конечно не ярый фанат ООП, но вы батенька ,slavaentp, похоже немного бередите. Вы мне напоминаете китайцев, которые сначало создают себе трудности а потом их решают. 
Например я не люблю использовать ООП в тех случиях когда без него можно обойтись, ну например какаянито маленькая програмка(обычно системная утила) - я стараюсь реализовать все на api, используя процедурный подход.  а когда речь идет о чем то более глобальном...например база данных. зачем создавать себе трудности, лопатить кучу документации, зачем изобретать велосипед, когда можно воспользоваться готовым классом и при необходимости дорабоать его. 
ну а уж слова по поводу того что функция - это ненужная вещь, я задам лишь один вопрос...вы когданибудь писали программы на нсеколько тысяч строк??!!  разбираться в такой мешанине кода это наверно веселое занятие...когда гораздо удобнее все фуки раскидать по юнитам, и при необгодимости вызывать их из главной программы.
PM MAIL ICQ   Вверх
nerezus
  Дата 22.9.2008, 19:43 (ссылка) |   (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Цитата

Я - человек, ориентированный на результат. Если программа работает, если цель ДОСТИГНУТА полностью - значит задача выполнена. Меня абсолютно не интересует, "оптимизирована" ли программа. Поставлена задача(в т.ч. и мной самим перед собой) - я написал код, который её решил - значит всё выполнено ИДЕАЛЬНО и ОПТИМАЛЬНО.
 ООП позволяет тебе писать меньше кода на больших проектах. Вопросы есть?

Добавлено через 2 минуты и 51 секунду
Есть такие штуки, как полиморфизм. Они уменьшают количество кода.
Есть такие штуки, как инкапсуляция. Они повышают читабельность кода.
Есть такие штуки, как шаблоны проектирования. Они уменьшают количество головной боли при разработке.
Есть такие штуки, как фреймворки. Они в разы сокращают количество кода по сравнению с C-style библиотеками.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила раздела "Философия программирования":
Се ля ви

Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО:

• вопросы перспективного развития методов написания ПО;

• изменяющиеся языки и методологии программирования;


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Философия программирования | Следующая тема »


 




[ Время генерации скрипта: 0.1139 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.