В новом приложении я избежал ошибок предыдущих разработчиков, которые делали “первое приложение”. Прежде всего, создавая приложение, необходимо держать в уме, что оно будет дорабатываться, изменяться, расширяться. И проектируя структуру приложения, необходимо следовать принципам объектно-ориентированного программирования и принципам SOLID. Я не буду описывать, что это такое, иначе мы уклон перетянем с непосвященного читателя в F.A.Q. по архитектуре приложений. Приведу пример с зависимостями:Чтоб собрать компьютер, который состоит из монитора, клавиатуры, мыши и системного блока, нам не нужно производить эти четыре устройства. Чтоб собрать системный блок, нам нужен жесткий диск, процессор, оперативная память… Нам тоже не нужно это все производить. Нам лишь нужно знать, где это взять. В реальной жизни у нас есть поставщики этих комплектующих на конвейер, с которого в конечном итоге сходит готовое устройство. В программировании тоже самое, это называется инъекцией зависимостей. Я внедрил Koin, который позволяет сделать примерно следующее “эй, андроид, мне нужно X, Y, Z, а ну-ка пошурши по сусекам, создай это и принеси мне вот сюда, да поживее”. Таким образом мне не нужно выполнять логистику нужных мне элементов (классов), а нужно лишь объявить, что я ищу, и куда это положить. Это позволяет расширять функционал приложения очень легко, когда руками протаскивать ничего не нужно.Самые сложные задачи это те, которые ты раньше не делал, то есть нет опыта, на технологиях, которые не знаешь. То есть все приходится учить, и тут же внедрять. Выучить можно всё, но время идет, и за оплаченное время бизнес хочет от разработчика какую-то отдачу. Сложность написания приложения с нуля, особенно когда ты один и посоветоваться не с кем, заключается в выборе правильной архитектуры и набора технологий, на которых оно будет написано. Я пошел по пути наименьшего сопротивления: на udemy я покупал курс “Андроид - профессиональный уровень”, там мы писали приложение “математика для детей”, там автор использовал все современные технологии полноценного “тяжелого” приложения. Я просто взял и скопировал архитектуру. Потом, когда я общался уже с миддл-разработчиком, который пришел на моё место, он оценил эту архитектуру и сказал, что ему все в коде нравится. В настоящее время я не могу ответить, что лучше - писать приложение с нуля или исправлять баги приложения. Т.к. не понятно само определение слова “лучше”. Я тут напишу про ощущения: когда ты пишешь приложение с нуля, или делаешь какой-то раздел, которого раньше не существовало, ты берешь на себя ответственность, ты получаешь удовлетворение созидателя, да и в целом, когда ты пишешь приложение ты в нем все знаешь, т.к. это твое детище. Ты меньше вникаешь в чужой код, просто берешь и делаешь. Здесь наверное противоречие об ответственности по моему предыдущему подразделу, что я не хотел брать на себя ответственность, но там имелось ввиду ответственность в решениях. Когда же ты правишь баги, тебе надо:
Интересно, пишите еще
Написал. Уже опубликованы 3-я и 4-я части
Умеешь, могёшь, отец.
Комментарий недоступен
Комментарий недоступен
Достаточно ведь просто число и количество вхождений хранить, ну и сумму всех, да.
Итого - время О(N), память О(1).
а в питоне
```
return sum(sorted(digits)[1:-1])
```