LINUX.ORG.RU

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

 , , ,


1

3

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

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

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

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



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

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

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

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

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

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

ziemin ★★
()

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

словом.

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

MikeDM ★★★★★
()

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

E ★★★
()

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

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

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

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

Hater ★★
()

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

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

открываю qt-creator

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

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

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

anonymous
()

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

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

тяп-ляп и в продакшн.

если постановка задачи: «чтобы работало», а менеджер - лопушок, то так и надо))

dimon555 ★★★★★
()

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

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

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

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

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

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

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

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

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

vim + gdb + cmake + git.

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

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

emulek
()

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

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

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

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

n1l
() автор топика

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

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

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

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

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

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

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

спасибо за развернутый ответ.

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

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

n1l
() автор топика

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

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

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

gdb

orlly? за 5 лет работы на крестах ни разу при РАЗРАБОТКЕ не использовал отладчик. тесты, ассерты. а так да, vim, git, make.

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