LINUX.ORG.RU

Как убедить тимлида притянуть в проект Boost

 , , ,


2

8

Здравствуйте.

Есть проект. Почти весь написан на C++, GUI + очень малая часть функционала написана на C#. Целевая платформа: оффтопик.

Конечно же есть библиотека с утилитами всякими. И вот там тимлид сидит и пишет свои костыли для работы с файловой системой: итерация по директории, удаление файла и т.д.

Я никак не могу, зачем он это делает (NIH?), и стараюсь убедить его, что мол есть же Boost.Filesystem, юзай его. Ответ таков: Boost тяжёлый, тянуть не хочется да и вообще лень. А вот мои костыли это просто лучшее решение. И это после того, как я регулярно в его костылях правлю баги какие-нибудь.

И это касается не только Filesystem. Он ещё своё жалкое подобие lexical_cast впихнул и много чего ещё...

Откуда такая может быть ненависть к Boost? И как с этим можно бороться? Кто что может посоветовать? Может у кого есть свои истории успеха.

Сменить тимлида\компанию не предлагать.

Ответ на: комментарий от zamazan4ik

Обратись к его нсчпльнику, скажи тимлид подсаживает проект на свой тулкит который к тому же ещё и багами полон.

torvn77 ★★★★★
()

я таких видела. проблема была в том, что они банально не умели читать по-английски и не могли осилить документацию буста (а она, кстати, хорошая и подробная, в большинстве библиотек). и это неумение прикрывалось попытками написать свои «более лучшие» велосипеды. и та же фигня с вылавливанием ошибок - я тыкала носом в баги и сегфолты, показывала им, как за 15 минут можно написать то же самое с помощью буста и что оно работает эффективнее, чем их велосипед. но это никак не влияло на упёртость и велосипедизм. а мне приходилось отлавливать баги и править их. в итоге, я оттуда просто ушла :)

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

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

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

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

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

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

На каком основании мы должны тебе верить?

И это после того, как я регулярно в его костылях правлю баги какие-нибудь.

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

И это касается не только Filesystem.

Ну filesystem не является чем-то сложным и имеет смысл только(на 95%) как кроссплатформенное решение. При этом ты пишешь, что платформа только мзадайка.

Он ещё своё жалкое подобие lexical_cast впихнул и много чего ещё...

Чем обусловлена жалкость этого самого подобия? Я очень много общался с экспертами и могу тебе описать поведение 99% подобных разоблачителей.

Всё просто. В мире существует миф, что ничего вменяемого создать нельзя - это является основой на которой зиждиться квалификация подавляющего большинства ваятелей. И эти самые ваятели испытают лютый батхерт от того, что кто-то что-то делает. И тут начинается любимая песня всех подобных экспертов. «Ты сделал лишь подобие чего, что у нас считается круто», либо другой подобный бред. Т.е. попытка унизить начинания других.

Тем самым они компенсируют неспособность начинаний своих. Я ничего не делаю, а тот делает, но делает он «жалкое подобие», а раз жалкое подобие, то значит, что ничего не делает. Это он пытается из себя что-то строить, а на самом деле мы знаем, что ничего сделать нельзя.

Если мы начинаем разбирать в чём собственно заключается «жалкость» подобия, то выясняется, что подобие заключается в отсутствии поддержки их легаси-платформы, их слабых и плохих инструментов, либо адаптации кода для их уровня понимания. «слишком много шаблонов, либо интерфейс не такой, как мы привыкли», либо сотни подобных заявлений.

В конечном итоге всё сводится к проблемам такого плана, которые не реализуемы и не реализуемы они потому, что у авторов просто нет на них ресурсов - времени, либо даже желания. Как появляются новые велосипеды? Человек/люди решают свои проблему как им надо и делятся решением. В их задачу не входит адаптация его для твоего борландс++3.1, либо ещё чего-то. И именно поэтому их решение записывается в подобие. По мнению экспертов они должны бросить всё и озаботится проблемами каких-то васянов.

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

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

Вот и обговори это со своим тимлидом. Это именно будет лучшим решением, потому что:

1. Не нужно будет тянуть тимлидовские самописные и плохоработающие костыли.
2. Не нужно будет тянуть жирнючий Boost в виде кучи header-only лапши и бинарных boost_system и boost_filesystem, которые просто так не встроишь в построение проекта, только бинарями в VCS раскидываться, что ещё хуже, чем писать самописные костыли.
3. Когда GNU/Linux (gcc, clang) по поддержке этой фичи догонят cl.exe и комитет C++ разупорится, ты получишь возможность практически без правок использовать функциональность filesystem уже и там. Без всяких Boost'ов.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

которые просто так не встроишь в построение проекта

чоэтавдруг? все жизнь из статически линкую.

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

всю жизнь их статически линкую.

сраный телефон лять

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

откройте для себя уже boost bcp:

http://www.boost.org/doc/libs/1_63_0/tools/bcp/doc/html/index.html

все претензии к «жирнючести» - от неграмотного использования и незнания возможностей буста. он может быть очень компактным. я его использовала в очень ограниченных ресурсах и проблем не возникало. более того, можно всё слинковать статически. зависимости останутся только от системных библиотек. и бинарь будет компактным.

Iron_Bug ★★★★★
()

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

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

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

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

Тогда лучше бы пилили проект изначально на Java. Ещё провереннее, стабильнее, кроссплатформеннее, ООП-шнее и жирнее.

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

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

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

Мань, ты в глаза долбишься што ль? Речь про boost filesystem, которая ни разу не header only :)

anonymous
()

Кстати, имей еще в виду. Пока используется самописный код, твоя личная ответственность за баги минимальна. Если уговоришь начальство перейти на буст, то любая бага, связанная с переходом, станет твоей лично. Ты подумай, оно тебе надо?

Иногда лучше оставить старый код как есть, тем более, если он более-менее работает. Может быть, у вас в проекте есть более приоритетные и нерешенные задачи, чем переписывание кода?

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

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

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

иногда статика не нужна (например, есть межпроцессное взаимодействие и общие вызовы). тогда можно отдельные либы слинковать динамически. но для filesystem это, скорее всего, даже не потребуется.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от EXL

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

Вообще проблем не вижу.

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

Бесплатно юзать можно, только если линковать не статически.

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

x905 ★★★★★
()

C++ это та ситуация, когда у тебя есть пластелин. Чтобы что-то из него слепить, надо его нагреть и лепить. Накидав палки пластелина друг на друга... ну это тоже дом, но некрасивый, медленный, говнодом короче.

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

Твой тимлид все делает правильно. За исключением C#. C# и C++ это настолько убого, что я даже писать об этом не буду.

ps: boost в нормальные проекты никто не тянет, у него репутация либы для наколенников-школьников

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

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

Нет ничего проще, чем обосрать легаси или просто не новый код. И твой код, может быть, со временем будет выглядеть для нового девелопера со свежим взглядом как УГ (не те библиотеки, кривая архитектура, ущербная документация, вырвиглазное оформление исходников и т.д. и т.п.).

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

чем же плохо попасть в завтрашний стандарт и спокойно без головняков перейти потом на стандартную либу?

Так и я про то же. В том же MS Windows, уже есть этот std::filesystem (не уверен про полную поддержку, правда), зачем Boost?

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

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

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

А где ты в мастдайке видел полноценное использование разделяемых библиотек? Каждый козел статически линкует, вот у них и получаются гигабайты в C:\Program Files

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

Хы... ну я даж спорить не буду. Но каждый козел на маздайке уже наступал в это болто и потому ну его к бесу, лучше собрать статикой с новыми либами и апдейтером залить всем свежую версию, чем читать потом багрепорты. Но откуда фанатикам знать

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

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

И про написать за день - ну Вы конечно повеселили знатно.

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

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

Я не знаю, что ТС называет велосипедами там, ведь код он не показывал. Вероятно, тимлид WinAPI там подвернул просто, а тянуть Boost счёл нецелесообразным ради двух функций.

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

где именно написано

в умах

И про написать за день - ну Вы конечно повеселили знатно.

обычно эту либу тянут ради пары костылей, которые к тому же генерик и сделаны для 100500 случаев, из которых нужен 1-2, которые не то что за день, а до обеда пишутся

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

А где ты в мастдайке видел полноценное использование разделяемых библиотек?

положи всё их в свой каталог - вот тебе полноценное решение

x905 ★★★★★
()

Ваш вопрос политический, а не технический, вы видите правильное решение, он его видеть не хочет(видимо свои интересы)

Поэтому у вас только один выход - подготовить доклад с примерами и всех на совещание включая начальство?

А так, вероятно, ваш проект подошел к необходимости большой реорганизации, но бабла и времени у конторы нет

ism ★★★
()
Последнее исправление: ism (всего исправлений: 2)
Ответ на: комментарий от mtiexpert

Можно не мне верить, а верить в log SVN'a и результаты статического анализа. И всего-навсего посмотреть, чьи коммиты пилят свои наколенные костыли, а чьи коммиты эти костыли доводят до ума, потому что они уже в коде начали использоваться и ловят баги. И чтобы проект работал, костыли нужно доводить до более-менее уодбоваримого состояния.

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

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

Я никогда никого не оскорбляю и не пытаюсь учить. Я пытаюсь настроить диалог и понять его точку зрения. И это не легаси код. Это код, который пилится прямо сейчас.

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

у меня телепатия сегодня не работает и я не могу сказать, что там навелосипедил тимлид. но насчёт вендозных API надо быть вдвойне осторожным. при разнообразии зоопарка разных маздаев у юзеров и при несовместимости тех самых API от версии к весии (а иногда даже от сервиспака к сервиспаку) лучше на них не завязываться, без особой на то необъодимости. и это не просто так мнение с потолка. мне приходилось заниматься поддержкой и доработкой жирного сетевого приложения, просто гигантского, в котором было требование работы на всех версиях маздая. и именно из-за разностей в API код был покрыт ifdef'ами чуть более, чем полностью. так что не надо надеяться на стабильность мелкософта. переносимости с точки зрения API там почти нет.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от EXL

Абсолютно верно, WinAPI, обёрнутое ifdef для Вин платформы. И потихоньку начинает появляться своя какая-то реализаиция для linux. Только, к сожалению, не двух функций.

zamazan4ik ★★
() автор топика
Последнее исправление: zamazan4ik (всего исправлений: 1)
Ответ на: комментарий от x905

пытался - в ответ молчание. Допрашивать не видел смысла.

zamazan4ik ★★
() автор топика

Парниша просто делает то что ему не в напряг, дурью мается, пока рабы клепают бизнес-логику. Он же тимлид, а ты смерд. Никого ты ничему не убедишь, можешь только начальству напеть сколько денег сэкономить можно, уволив бездельника и заюзав отточеную веками почти стандартную библиотеку.

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

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

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

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

zamazan4ik ★★
() автор топика

Мне раз sdk попался от товарищей, которые используемый кусок буста забыли с собой положить. И сказать о том что используют буст «забыли».

Не то что бы страшно, но неприятно.

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

а мне боятсья нечего - он по-русски не умеет читать и ника моего не знает :)

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

Про порядочно я сомневаюсь - всё-таки не Spirit и не MPL какие-нибудь. На время компиляции тут вообще всё равно: проект раньше билдился 2 минуты на моей машинке. Всех всё устраивало. Я уменьшил время билда до 1 минуты - всех всё устраивает. Если Время билда увеличится снова до двух минут - всех всё снова будет устраивать.

zamazan4ik ★★
() автор топика
Последнее исправление: zamazan4ik (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.