По-перше, відмова від відповідальності: я не знаю, чи відповідає це питання цьому веб-сайту, але я все ще вважаю актуальним питання не лише до мене, але і для інших, хто є початківцями. Якщо питання можна вдосконалити, щоб відповідати тут, будь ласка, зверніть увагу на int коментарі. Якщо це не підходить, дайте мені знати і, якщо можливо, повідомте мені, де це можна обговорити, тому що я не знайшов для цього хороших форумів.
Я навчився програмувати в 2009 році, коли вивчав PHP. Пізніше в 2012 році я перейшов на C # і .NET. У всякому разі, кодування - це не проблема, записування алгоритмів - це не моя проблема. Моя актуальна проблема полягає в тому, щоб знати, що потрібно закодувати для досягнення вимоги і де це потрібно закодувати.
Більшість курсів, доступних в Інтернеті, стосуються того, як - як писати код на певній мові, як використовувати деякі набори API та ін. Це не моя суть у цьому.
У ці роки я багато читав про купу речей: об’єктно-орієнтований аналіз та дизайн, шаблони дизайну, дизайн, керований доменом тощо. Я розумію, наприклад, принципи SOLID, деякі основні ідеї DDD, такі як необхідність залучення експертів домену, розвиток всюдисущої мови тощо. Я б наважився сказати, що я теоретичний досвід принаймні розумний.
Але коли справа доходить до мене, я відчуваю, що я катастрофа. Деякий час тому мені потрібно було продовжувати розвиток фінансової системи, яку вже розробляв хтось інший. Це така "стара система", розроблена за допомогою C # та WinForms. Я вперше обрав проект із реальною складністю домену, з великою кількістю правил бізнесу тощо.
Зізнаюсь, що, коли я отримую вимоги більшість часу, я думаю, "як це можна зробити?" - Я не маю уявлення про те, як навіть почати працювати над вимогами, щоб зрозуміти, що потрібно зробити. Мої основні плутанини, на які я вважаю, - це те, що я повинен кодувати, які класи, інтерфейси і куди йде кожна логіка, на якому класі повинна бути кожна річ. Проблема в тому, що я не знаю, з чого почати.
Здебільшого, з досить великою думкою, я закінчуюсь деякими ідеями, але ніколи не знаю, як судити, чи моя ідея правильна чи ні.
Я маю на увазі, що я не думаю, що це відсутність теорії, тому що я сказав, що я читав про купу речей щодо архітектури програмного забезпечення та орієнтації на об'єкти, які мені рекомендували, але це не дуже допомогло визначити, що потрібно зробити на практиці .
Тож як я можу навчитися дійсно робити об’єктно-орієнтований дизайн? Що я хочу дізнатися, це: задані вимоги знають, як почати працювати над ними в процесі, який призводить до з'ясування того, що потрібно зробити і куди належить кожен фрагмент коду. Як я також можу навчитися судити, чи моя ідея правильна чи ні?
Я вважаю, що повне пояснення цього як відповіді тут було б неможливим. Що я шукаю, але це може бути відповідно до стилю сайту - це відповіді, які просто дають огляд та вказують деякі довідники (книги, онлайн-курси тощо), які можна використовувати для розширення ідей та дійсного вивчення цих речей.