Russian Qt Forum
Ноябрь 12, 2024, 04:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3 4 ... 12   Вниз
  Печать  
Автор Тема: Тренировка навыков быстрого программирования  (Прочитано 80530 раз)
Hrundel
Гость
« Ответ #15 : Февраль 13, 2014, 14:23 »

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

Я слышал, что googletest популярен. Его можно для Qt приспособить?

Профи пишут Unit-тесты с использованием QTest и QTestLib http://qt-project.org/doc/qt-4.8/qtestlib-manual.html#qtestlib
Хотя, чистым CPPUnit тоже не плохо http://sourceforge.net/apps/mediawiki/cppunit/index.php?title=Main_Page

Я так понимаю ты пытаешься сразу по концепции Extrem программирования писать? Только без знаний разработки архитектуры это будет очень болезненно.
« Последнее редактирование: Февраль 13, 2014, 14:29 от Hrundel » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #16 : Февраль 13, 2014, 14:48 »

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

Я валю всё в main.cpp, потому что сервер принимает только один файл - main.cpp.

Как мне не писать in.close() 3 раза. Покажите, пожалуйста:
А я не о файле, а о ф-ции main. Она должна выглядеть примерно так

Код
C++ (Qt)
int main(int argc, char** argv)
{
 std::vector <int> vec;
 
// получаем имя файла из командной строки, если там пусто, то input.txt (по умолчанию)
 std::string iFileName = GetInName(argc, argv);
 
// читаем данные из файла
 int err = ReadData(iFileName, vec);
 if (err) return ShowError(err, &iFileName);
 
// выполняем содержательную часть
 int result;
 err = sumOfMaxAndMin(arr, &result);
 if (err) return ShowError(err, &iFileName);
 
// записываем выходной файл
 std::string oFileName = GetOutName(argc, argv);
 err = WriteResult(oFileName, result);
 if (err) return ShowError(err, &oFileName);
 
 return 0;
}
Теперь начинаем парить ReadData и др ф-ции, там тоже выделяем ф-ции, их будет уже меньше - и так до тех пор пока не напишем все. Когда Вы все это сделаете (аккуратно, с любовью а не абы как) - Вы с удивлением обнаружите что in.close() не понадобился ни разу  Улыбающийся
Записан
8Observer8
Гость
« Ответ #17 : Февраль 13, 2014, 15:03 »

Профи пишут Unit-тесты с использованием QTest и QTestLib http://qt-project.org/doc/qt-4.8/qtestlib-manual.html#qtestlib
Хотя, чистым CPPUnit тоже не плохо http://sourceforge.net/apps/mediawiki/cppunit/index.php?title=Main_Page

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

Я только начал разбираться, вот инсткрукции даже написал, для таких же новичков, как и я:
- QTestLib: http://www.prog.org.ru/topic_26413_0.html
- CppUnit: http://notes.orgfree.com/tdd_cpp.php

CppUnit, к сожалению, уже не поддерживается много лет. Он безнадёжно устарел. Я его буду использовать только для решения задач. Ибо с ним удобно работать в среде NetBeans (так как поддержка CppUnit встроена в NetBeans, так же NetBeans поддерживает Qt). Да и задачи удобно протестить, а потом уже сдавать на проверку серверу. Других фреймворков я ещё не рассматривал. Их очень много, но никто не рассказывает, какой лучше Грустный

Почему QTestLib настолько беден по сравнению с googletest (судя по отзывам на форумах)? Почему в нём нет поддержки mock-объектов?

Я в любом случае продолжу изучение QTestLib, но мне нужна более мощная альтернатива.

Стоит ли изучать googletest? Так ли он популярен среди профи? И популярен ли он среди Qt-разработчиков?

Mock-объекты: http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5#Fake-.2C_mock-.D0.BE.D0.B1.D1.8A.D0.B5.D0.BA.D1.82.D1.8B_.D0.B8_.D0.B8.D0.BD.D1.82.D0.B5.D0.B3.D1.80.D0.B0.D1.86.D0.B8.D0.BE.D0.BD.D0.BD.D1.8B.D0.B5_.D1.82.D0.B5.D1.81.D1.82.D1.8B
« Последнее редактирование: Февраль 13, 2014, 15:10 от 8Observer8 » Записан
8Observer8
Гость
« Ответ #18 : Февраль 13, 2014, 15:08 »

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

Лишь преобразование из строки в целое. Что в этом плохого?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #19 : Февраль 13, 2014, 15:34 »

Лишь преобразование из строки в целое. Что в этом плохого?
Плохо (и очень) что Вы не стремитесь к совершенству своего кода. Насколько оно достижимо - то философский вопрос. Но если нет самого стремления - никакая беготня по серверам, гитам (и где угодно) не поможет.

Все, умолкаю
Записан
Hrundel
Гость
« Ответ #20 : Февраль 13, 2014, 15:41 »

Почему QTestLib настолько беден по сравнению с googletest (судя по отзывам на форумах)? Почему в нём нет поддержки mock-объектов?

Потому,  что это все нафиг не нужно. Особенно если ты пишешь программы в которых меньше 20.000 строк кода.
Еще раз повторюсь - без знаний разработки архитектуры все это сотрясание воздуха. С грамматно разработанной архитектурой тебе не понадобятся никакие навороченые тесты. Все тестовые фреймворки направлены на гиганские проекты.  Поставь лучше перед собой задачу - создания оптимальной архитектуры программы, изучи UML, научись качественно работать с классами, пиши как можно проще и понятнее - тогда тебе Unit-тесты будут очень редко необходимы - только для сложных структур данных.
На мой взгляд ты двигаешься не с того конца. Не надо заниматься тем, чем занимаеться группа из 20 человек программистов.

Приведу пример:

Парень из моего потока пришел на практику. Там уже год отработал паренек простым заштатным программистом. Год пытался написать программу - безрезультатно. Этот мой однокурсник изучил задачу - за месяц разработал архитектуру, два месяца писал, сдал досрочно полностью рабочий релиз!

А вообще, я присоеденяюсь к Igors - делай что хочешь!
« Последнее редактирование: Февраль 13, 2014, 15:50 от Hrundel » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #21 : Февраль 13, 2014, 15:49 »

2 8Observer8
Задавайте меньше вопрос и больше думайте/пробуйте сами, читайте, разбирайтесь. Все приходит с опытом, которого у вас немного.
Будет больше опыта/знаний, и код будет лучше и писаться будет проще. Не спешите, все будет. Подмигивающий
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4746



Просмотр профиля WWW
« Ответ #22 : Февраль 13, 2014, 15:54 »

...иначе станешь Spark №2
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
8Observer8
Гость
« Ответ #23 : Февраль 13, 2014, 15:58 »

Лишь преобразование из строки в целое. Что в этом плохого?
Плохо (и очень) что Вы не стремитесь к совершенству своего кода. Насколько оно достижимо - то философский вопрос. Но если нет самого стремления - никакая беготня по серверам, гитам (и где угодно) не поможет.

Все, умолкаю

Я не настаиваю, что это хорошо. Я понял, что это плохо, но не понял почему? Я помню о программе, я её сейчас доделаю.

2 8Observer8
Задавайте меньше вопрос и больше думайте/пробуйте сами, читайте, разбирайтесь. Все приходит с опытом, которого у вас немного.
Будет больше опыта/знаний, и код будет лучше и писаться будет проще. Не спешите, все будет. Подмигивающий

Спасибо! Если у меня не получится стать младшим разработчиком в нормальной фирме, в которую я хочу (через две недели), то я реально труп  Веселый
Записан
Hrundel
Гость
« Ответ #24 : Февраль 13, 2014, 16:00 »

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

Дык вот откуда берется отстойный софт!
Записан
8Observer8
Гость
« Ответ #25 : Февраль 13, 2014, 16:07 »

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

Дык вот откуда берется отстойный софт!

Я считаю, что ещё мне рановато в петлю лезть. Люди говорят, что ещё можно побороться.
Записан
8Observer8
Гость
« Ответ #26 : Февраль 13, 2014, 16:32 »

Почему QTestLib настолько беден по сравнению с googletest (судя по отзывам на форумах)? Почему в нём нет поддержки mock-объектов?

Потому,  что это все нафиг не нужно. Особенно если ты пишешь программы в которых меньше 20.000 строк кода.
Еще раз повторюсь - без знаний разработки архитектуры все это сотрясание воздуха. С грамматно разработанной архитектурой тебе не понадобятся никакие навороченые тесты. Все тестовые фреймворки направлены на гиганские проекты.  Поставь лучше перед собой задачу - создания оптимальной архитектуры программы, изучи UML, научись качественно работать с классами, пиши как можно проще и понятнее - тогда тебе Unit-тесты будут очень редко необходимы - только для сложных структур данных.
На мой взгляд ты двигаешься не с того конца. Не надо заниматься тем, чем занимаеться группа из 20 человек программистов.

Согласен, с QTestLib, googletest я перегнул. Сейчас мне не нужно тратить на это время. С тем, что Вы мне посоветовали осваивать, я согласен. Нужно расставлять приоритеты.

То что я вначале писал про CppUnit, мне просто удобно так писать функцию, которая решает задачу. Я смотрю какие входные данные для задачи и какое будет соответствие на выходе. С помощью тестов описываю все "щекотливые" ситуации, чтобы не забыть их учесть в функции и чтобы сервер меня не обломал. Для задач это очень удобно, вот я и описал это. Думал, что кому-то пригодится. Хотя... тот ресурс с задачами для школьников и студентов, а тут уже рабочии люди сидят. Этого я не учёл. Поэтому это глупо получилось.

Я решил с того ресурса с задачами 35 штук (правда из раздела "Начинающие")

Разве решение задач не учит программированию?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #27 : Февраль 13, 2014, 16:44 »

Разве решение задач не учит программированию?
Скажу так, учит основам.
Мое мнение, учится нужно на реальной большой задаче. Придумайте себе задачу, в которой будет все что вы хотите освоить и решайте ее, тогда вы сразу будете учится объединять решение маленьких подзадач для решения большой, сможете представлять систему целиком, продумывать ее архитектуру.
Решая только маленькие задачи вы это пропускаете.
Записан
Hrundel
Гость
« Ответ #28 : Февраль 13, 2014, 16:49 »

Разве решение задач не учит программированию?

Вот тут-то собака и порылась!!! Ты программированию учишься или разработке? Это разные вещи. Тестирование - это одна из стадий разработки занимающая большую ее часть. Ты хочешь стать младшим разработчиком, но понятия не имеешь о разработке! Учи UML и пытайся вникнуть в основы архитектуры.

Мое мнение, учится нужно на реальной большой задаче.

Полностью согласен с Old!!!
« Последнее редактирование: Февраль 13, 2014, 16:52 от Hrundel » Записан
Bepec
Гость
« Ответ #29 : Февраль 13, 2014, 16:54 »

Я б посоветовал сразу идти в фирму младшим разработчиком на маленькую ЗП. Обычно берут, так как всегда есть задачка, которая не столь важна, а рук не хватает Улыбающийся

Там из тебя выбьют дурь про тестирование и прочее. Дадут реальную з/п, если будет хороший начальник, ещё и подъучит тебя нормальной разработке.

PS начинай писать программу с алгоритма работы Веселый
Записан
Страниц: 1 [2] 3 4 ... 12   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.468 секунд. Запросов: 23.