LINUX.ORG.RU

Как делается серьезный проект на с++

 , , ,


1

3

Сабж. Я недавно в линуксе и с/с++ потому хотелось бы знать, что на в самом деле нужно уметь. Т.е. гит и всякие контроли версий это понятно. Меня больше интересует отладка, построение архитектуры проекта, ТДД, если есть. В особенности ТДД. Какой стандарт чаще используется?

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

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

Прошу помочь словом.


Я хочу более грамотно подойти к делу

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

Причём тут git, qt и всё прочее? Это потом. Сиди сначала с бумажкой и карандашиком - прикидывай.

Как прикинешь, уже будут видны узкие места, общая т.с. картина.

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

ziemin ★★ ()

Прошу помочь словом.

словом.

иди в какой нибудь проект падаваном. увидишь как все делается по уму.

MikeDM ★★★★★ ()

А что конкретно у тебя не работает?

E ★★★ ()

построение архитектуры проекта, ТДД, если есть. В особенности ТДД.

Рекомендую найти и ознакомиться с парой опенсорцных проектов на qt. Ну хоть с тем же qtcreator. Там наверняка есть какие-то тесты.

Как я делаю, открываю qt-creator, создаю проект, добавляю его в гит, создаю парочку форм, оформляю и провожу некоторый тестинг. Я хочу более грамотно подойти к делу.

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

Hater ★★ ()

может лучше на турбопаскале как одноклассники?

x4DA ★★★★★ ()
Последнее исправление: x4DA (всего исправлений: 1)

открываю qt-creator

Неправильно бутырброд ешь. Криейтор для больших проектов только вреден.

nanoolinux ★★★★ ()

Как делается серьезный проект на с++

тяп-ляп и в продакшн. по сабжу: vim + gdb + cmake + git.

x0r ★★★★★ ()
Ответ на: комментарий от MikeDM

Так позови его себе, он в отличии от меня хоть плюсы знает и qt ::)

Dron ★★★★★ ()
Ответ на: комментарий от nanoolinux

А как правильно? Ну например, как бы ты дебажил LO встретившись с багом лично и первый раз видя код?

anonymous ()

На ТДД можешь забить, для сей не актуально.

ya-betmen ★★★★★ ()

Меня больше интересует отладка, построение архитектуры проекта, ТДД, если есть. В особенности ТДД.

Пока твоя мысль не ушла слишком далеко от темы: http://programming-motherfucker.com/

const86 ★★★★★ ()
Ответ на: комментарий от Dron

Так позови его себе, он в отличии от меня хоть плюсы знает и qt ::)

я ненадолго заморозил проект. думаю до осени.

n1l если до осени не исчезнет желание поучаствовать - милости прошу.

MikeDM ★★★★★ ()
Ответ на: комментарий от MikeDM

плюсую, сам так просвящался, способа лучше наверно и не придумаешь)

WRG ★★★★ ()
Ответ на: комментарий от anonymous

Логами или может быть gdb если нет многопоточности.

n1l ()
Ответ на: Как делается серьезный проект на с++ от x0r

vim + gdb + cmake + git.

gdb тут лишний. От него нет пользы в сложном проекте. (ну не распарсить gdb сложный C++ код, увы. А уровне ассемблера оно в такую ☣ превращается, что смысла и нет никакого).

Остальное нужно, но на вкус и цвет все фломастеры разные. У меня vim+make(autotools)+mercurial. Ясное дело, что в чужом проекте свой устав можно засунуть себе в жопу (:

emulek ()
Ответ на: комментарий от MikeDM

С превеликим удовольствием. Контактами обменяемся?

n1l ()

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

В одну харю? Отродясь не нужно. Это всё годится, когда проект быдлокодят >3 индусов. Тогда им нужен сеньор, который всё это организует и будет погонять их кнутом, заставляя писать тесты, делать профилирование и прочие вещи без которых их быдлокод просто не будет работать вместе. Или вообще работать.

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

я просто пытаюсь улучшить свою квалификацию. Кодить «что бы работало» я уже умею.

n1l ()

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

Но в целом предстоит решить ряд проблем:

  • Алгоритмическая проблема - собственно сама задача. Это неинтересно, так как у каждого свое
  • Проблема архитектуры - когда кода будет написано достаточно много, то актуальной станет проблема роста и смены масштабов. Необходимо избежать экспоненциального роста трудозатрат на добавление новой фичи от объема уже написанного кода. Код должен быть сделан так, чтобы его можно было в дальнейшем неограниченно модифицировать и совершенствовать (привет всем любителям писать макаронный код). Проблема смены масштабов, это когда мы думали, что программа будет работать с десятью объектами, а на практике оказалось, что надо работать с миллионом. Количественное изменение может потребовать качественно других методов работы с объектом. Приходится прикидывать, где стоит ожидать смены масштабов, а где не стоит и закладывать все это в архитектуру. Ну и хорошая архитектура предполагает некую простоту, логичность, интуитивность и красоту. Но последнее - сильно абстрактные вещи.
  • Проблема контроля качества - чем больше кода, тем тяжелее контролировать его качество. Полезно задаться вопросом, как мы все это написанное говно будем тестировать. Ручное тестирование полезно, но в крупных проектах этот процесс надо автоматизировать. Путей много. Важно запомнить одну вещь - несмотря на то, что создание автоматизированной системы тестирования всегда требует больших трудозатрат, оно все равно выгодно. В серьезном проекте одним только ручным просмотром кода и ручными проверками обойтись нельзя, а без контроля качества кода все очень плохо кончится.
  • Проблема завершенности продукта - конечно реализовывать фичи и прочие прикольные штуки интересно, но ещё надо думать о документации, процедуре инсталляции и других вещах. Кто-то это должен будет сделать. Тут можно провести аналогию с неким товаром в магазине. Когда вы покупаете микроволновку, вы ведь помимо самой микроволновки получаете инструкцию, какие-то дополнительные предметы и самое главное, все это упаковано в коробку, в которой будет легко и удобно довезти свою микроволновку до дома. Если хочешь продавать законченный продукт, то он должен быть действительно законченным.
pathfinder ★★★ ()
Последнее исправление: pathfinder (всего исправлений: 1)
Ответ на: комментарий от pathfinder

Хорошо изложено. Вам бы (кроме шуток), книжки писать :)

Twissel ★★★★★ ()
Ответ на: комментарий от pathfinder

редко когда бывают такие годные комментарии в /development/ ЛОРа (в духе stackoverflow)

anonymous ()
Ответ на: комментарий от n1l

Про gdb, а что для многопоточности подходит? А то намучался с gdb...

Rubbiroid ()
Ответ на: комментарий от Rubbiroid

ИМХО отладчкики для многопоточки вообще не подходят.

n1l ()

Как делается серьезный проект на с++

Надо серьезное лицо с начала надеть!
Все остальное мелочи не требующие особого внимания.

vada ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.