В данном случае у вас и проблем не будет, которые вы пытались решать.
У вас инкапсуляция будет скрывать устройство телевизора или получения температуры, как она получается вас не должно интересовать.
Вас должен интересовать контракт. Если в контракте нет возможности передать ошибку, то делайте новый контракт и, например, используя шаблон адаптер реализуйте его
Никак, вы бы понимали, что за что отвечает и не трогали бы уже существующие реализии и их использование в легасе коде.
А так и реализацию менять и кучу легаси в 100500 местах.
Аналогия такая. Вы купили чернобелый. телевизор, и вдруг появился цветной. в продаже. Но вместо того, чтобы поменять его на цветной заменой на другой экземпляр, лезите внутрь, и все там сами меняете, схемы, кинескоп итд. Зачем?
Требования не проанализированы. По всей видимости быстро написали реализацию и в продакшен.
Дизайн не продуман. А надо было бы его нарисовать, выделить интерфейс для работы с температурой, продумать граничные условия, механизм передачи ошибок и т. д. И т. П. .
Если уж требования поменялись, то делайте новую реализацию. Но так как у вас тут все будет зависеть от конкретного класса, а не от интерфейса. То все считайте приехали. Был бы интерфейс можно было бы новую реализацию сделать с проверками, а так все менять придётся.
Если уж вообще требования поменялись, то и вводите новый интерфейс и расширяйте реализацию.
В общем, моё мнение проблема тут в подходе к разработке, сразу код и в продакшен. Так не надо, надо хоть маломальский анализ и Дизайн прикинуть. Иначе код превратиться в лапшу при любой парадигме программирования.
Это просто означает, что ваш Компилятор не поддерживал в полной мере стандарт С++, со всеми вытекающими на ваш страх и риск, считайте это некий диалект С++.
Есть такое понятие Embedded C++, там как раз часть библиотеки отсутствует и ещё кое что, например нет исключений. Ну дак это и другой язык
Всё что есть в стандартной либе С++ - должно быть реализовано по стандарту и никак иначе.
Нет, в идее std было заложено, что она может быть реализована на любой платформе, так как это часть языка. Там нет такого, что ты захотел использовать что-то, а оно у тебя не работает на платформе.
Всё что есть в std, должно быть реализовано и работать везде. Это база.
Так-то fstream довольно абстрактная вещь, предназначен для работы с данными в именованной области памяти и с абстрактным I/O потоком.
Почему вы думаете, что он не нужен для микроконтроллеров?
Это же не обязательно файл на диске. Вполне себе нужная и самое главное возможная для реализации везде штука.
Аналогию можно привести с консолью. В микроконтроллере нет консоли, однако std::cout прекрасно работает и выводит информацию через отладочный интерфейс в IDE, ну или вы можете перенаправить поток I/O куда хотите, в UART, например.
С TCP/IP так не выйдет - это уже какая-то специфика.
Насколько я понимаю, всё что есть в std, должно быть реализовано и работать везде. Это база.
С другой стороны, вот если unique_ptr, то причём тут счётчик байт, и можно вообще не использовать при работе с вектор, и получается вопросов нет? а если будут, то и проверить можно, тем более что некоторые конструкции языка это запретят, в том числе и заимствование iterator в lifetime. Согласны же?
Думаю, что планирование приблизительное (пальцем в небо - типа я так вижу на данном этапе) - оно конечно в часах, потому что это надо действительно для оценки стоимости проекта.
Другое дело, что в реальности эти часы, просто часы для бухгалтера и инвестиционного комитета, который решать давать деньги или нет.
И в реальности логично оперировать попугаями, как в скраме, мол эта фича на 10 попугаев, а эта на 2. Создали полный список фич, просуммировали попугаи (получили скажем 100500), потом посмотрели, ага от нас хотят, чтобы мы сделали проект за 10 месяцев. Значит надо 10 спринтов по 1005 попугаев.
Стали делать первый спринт - получилось скорость 5025 попугаев, получается вместо 10 месяцев будем делать 20. Идем на комитет, рассказываем, что вместо 10 месяцев будем этой командой делать 20 месяцев.
Комитет уже решает, либо соглашается, ок делайте 20 месяцев, либо говорит давайте в два раза больше народу нагоним, а если денег нет, то разгоняем команду и закрываем проект.
Проекты надо максимально упрощать, ставить конкретные задачи и договариваться об итоговом и промежуточных результатах с заказчиком.
Если вы хотите использовать студентов, как бесплатную раб. силу, то думаю, что только один вариант
Вы сами должны делать весь проект, при этом можете делить его на мелкие задачи, которые могут решить студенты. Вы должны все задачи ревьюить и сливать в главную ветку. В таком случае, вы можете:
Делать проект бесконечно долго, студенты меняются, но задачи могут не кончаться.
Можете быстро реагировать на обратную связь от заказчика. Вы знаете как и что работает, и что и где поправить или какую задачу создать.
Не надо выбирать мотивированных студентов, достаточно любых, которые заинтересованы получить хорошую оценку по вашему курсу.
В принципе можете сами зарабатывать, если заказчик вдруг скажет, что то добавить, вы можете попросить денежку.
А почему 40 к? Медиана в России вроде 57 к. На 57 к уже неплохо можно жить, даже снимая квартиру где нить в Челябинске за 12 000 рублей + 5000 за коммуналку.
На 2300 евро в Германии со сьемом квартиры непрожить вообще, по себе знаю.
ООП работает так как заявлено.
Вы поменяли контракт, а это не про инкапсулицию.
НУ и нарушили принцип инверсии зависимостей.
В данном случае у вас и проблем не будет, которые вы пытались решать.
У вас инкапсуляция будет скрывать устройство телевизора или получения температуры, как она получается вас не должно интересовать.
Вас должен интересовать контракт. Если в контракте нет возможности передать ошибку, то делайте новый контракт и, например, используя шаблон адаптер реализуйте его
Никак, вы бы понимали, что за что отвечает и не трогали бы уже существующие реализии и их использование в легасе коде.
А так и реализацию менять и кучу легаси в 100500 местах.
Аналогия такая. Вы купили чернобелый. телевизор, и вдруг появился цветной. в продаже. Но вместо того, чтобы поменять его на цветной заменой на другой экземпляр, лезите внутрь, и все там сами меняете, схемы, кинескоп итд. Зачем?
Тут сразу несколько проблем.
Требования не проанализированы. По всей видимости быстро написали реализацию и в продакшен.
Дизайн не продуман. А надо было бы его нарисовать, выделить интерфейс для работы с температурой, продумать граничные условия, механизм передачи ошибок и т. д. И т. П. .
Если уж требования поменялись, то делайте новую реализацию. Но так как у вас тут все будет зависеть от конкретного класса, а не от интерфейса. То все считайте приехали. Был бы интерфейс можно было бы новую реализацию сделать с проверками, а так все менять придётся.
Если уж вообще требования поменялись, то и вводите новый интерфейс и расширяйте реализацию.
В общем, моё мнение проблема тут в подходе к разработке, сразу код и в продакшен. Так не надо, надо хоть маломальский анализ и Дизайн прикинуть. Иначе код превратиться в лапшу при любой парадигме программирования.
Самопал 😀
Не знаю таких исключений, и стековерфлоу https://stackoverflow.com/questions/7854954/is-the-c-std-library-platform-independent
Можете прислать ссылку на такую фразу. По моим данным, это не так
https://stackoverflow.com/questions/7854954/is-the-c-std-library-platform-independent
Это просто означает, что ваш Компилятор не поддерживал в полной мере стандарт С++, со всеми вытекающими на ваш страх и риск, считайте это некий диалект С++.
Есть такое понятие Embedded C++, там как раз часть библиотеки отсутствует и ещё кое что, например нет исключений. Ну дак это и другой язык
Всё что есть в стандартной либе С++ - должно быть реализовано по стандарту и никак иначе.
Это как так? Почему может не быть, std это часть языка, не может не быть, ну либо это уже не С++.
Файлы есть везде, где есть память. Это же просто именованная область памяти.
Нет, в идее std было заложено, что она может быть реализована на любой платформе, так как это часть языка. Там нет такого, что ты захотел использовать что-то, а оно у тебя не работает на платформе.
Всё что есть в std, должно быть реализовано и работать везде. Это база.
Всё остальное отдельными библиотеками.
Так-то fstream довольно абстрактная вещь, предназначен для работы с данными в именованной области памяти и с абстрактным I/O потоком.
Почему вы думаете, что он не нужен для микроконтроллеров?
Это же не обязательно файл на диске. Вполне себе нужная и самое главное возможная для реализации везде штука.
Аналогию можно привести с консолью. В микроконтроллере нет консоли, однако std::cout прекрасно работает и выводит информацию через отладочный интерфейс в IDE, ну или вы можете перенаправить поток I/O куда хотите, в UART, например.
С TCP/IP так не выйдет - это уже какая-то специфика.
Насколько я понимаю, всё что есть в std, должно быть реализовано и работать везде. Это база.
С++ тем и хорош, что его применять можно везде, на любой платформе. И библиотечный функции работают на любом процессоре и микроконтроллер.
Вот есть у меня простой микконтроллер, там нет никакого TCP/IP, и зачем мне стандартная библиотека работы с TCP/IP там?
С другой стороны, вот если unique_ptr, то причём тут счётчик байт, и можно вообще не использовать при работе с вектор, и получается вопросов нет? а если будут, то и проверить можно, тем более что некоторые конструкции языка это запретят, в том числе и заимствование iterator в lifetime. Согласны же?
Делали мы такой экспиремнт, все приходит к тому, что все начинают работать как самое слабое звено.
Может в США, его(слабое звено) просто уволят, но у нас это не сработало.
Дак, я так понял он не поменялся. Они примеили парную кучу для алгоритма Дейкстры и показали, что это оптимально.
Как то мы работали с Филипинцами, была девушка - лидер по тестированию. И вот мы на митинге обсуждаем задачи по тестированию на завтра.
Девушка, говорит, я завтра и, скорее всего после завтра не успею задачи закрыть, мол сделаю через 3 дня.
Ну Ок. А на завтра она нам всем присылает фото из больницы, с новорождённым, у неё родился уже 4 ребёнок.
На следующий день она уже закрывала свои такси. Ну мы были в шоке особенно наши девушки.
Думаю, что планирование приблизительное (пальцем в небо - типа я так вижу на данном этапе) - оно конечно в часах, потому что это надо действительно для оценки стоимости проекта.
Другое дело, что в реальности эти часы, просто часы для бухгалтера и инвестиционного комитета, который решать давать деньги или нет.
И в реальности логично оперировать попугаями, как в скраме, мол эта фича на 10 попугаев, а эта на 2. Создали полный список фич, просуммировали попугаи (получили скажем 100500), потом посмотрели, ага от нас хотят, чтобы мы сделали проект за 10 месяцев. Значит надо 10 спринтов по 1005 попугаев.
Стали делать первый спринт - получилось скорость 5025 попугаев, получается вместо 10 месяцев будем делать 20. Идем на комитет, рассказываем, что вместо 10 месяцев будем этой командой делать 20 месяцев.
Комитет уже решает, либо соглашается, ок делайте 20 месяцев, либо говорит давайте в два раза больше народу нагоним, а если денег нет, то разгоняем команду и закрываем проект.
Если вы хотите использовать студентов, как бесплатную раб. силу, то думаю, что только один вариант
Вы сами должны делать весь проект, при этом можете делить его на мелкие задачи, которые могут решить студенты. Вы должны все задачи ревьюить и сливать в главную ветку. В таком случае, вы можете:
Делать проект бесконечно долго, студенты меняются, но задачи могут не кончаться.
Можете быстро реагировать на обратную связь от заказчика. Вы знаете как и что работает, и что и где поправить или какую задачу создать.
Не надо выбирать мотивированных студентов, достаточно любых, которые заинтересованы получить хорошую оценку по вашему курсу.
В принципе можете сами зарабатывать, если заказчик вдруг скажет, что то добавить, вы можете попросить денежку.
Проверено на собственном опыте., кроме денежки 😀
А почему 40 к? Медиана в России вроде 57 к. На 57 к уже неплохо можно жить, даже снимая квартиру где нить в Челябинске за 12 000 рублей + 5000 за коммуналку.
На 2300 евро в Германии со сьемом квартиры непрожить вообще, по себе знаю.
Почему 30%?