Вопросы с тегом «architecture»

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

427
Как мне создать свой собственный язык программирования и компилятор для него [закрыто]

Я разбираюсь в программировании и сталкивался с такими языками, как BASIC, FORTRAN, COBOL, LISP, LOGO, Java, C ++, C, MATLAB, Mathematica, Python, Ruby, Perl, JavaScript, Assembly и так далее. Я не могу понять, как люди создают языки программирования и разрабатывают компиляторы для этого. Я также...

215
Действительно ли преждевременная оптимизация - корень всего зла?

Мой коллега сегодня создал класс под названием ThreadLocalFormat, который в основном переместил экземпляры классов Java Format в локальный поток, поскольку они не безопасны для потоков и «относительно дороги» в создании. Я написал быстрый тест и рассчитал, что смогу создать 200 000 экземпляров в...

199
При использовании принципа единой ответственности, что представляет собой «ответственность»?

Кажется довольно ясным, что «принцип единой ответственности» не означает «только одно». Вот для чего нужны методы. public Interface CustomerCRUD { public void Create(Customer customer); public Customer Read(int CustomerID); public void Update(Customer customer); public void Delete(int CustomerID);...

140
В чем преимущество формата с прямым порядком байтов?

Процессоры Intel (и, возможно, некоторые другие) используют формат хранения с прямым порядком байтов для хранения. Мне всегда интересно, почему кто-то захочет хранить байты в обратном порядке. Есть ли у этого формата какие-либо преимущества перед форматом с прямым порядком...

135
Лучше ли возвращать NULL или пустые значения из функций / методов, где возвращаемое значение отсутствует?

Я ищу рекомендацию здесь. Я борюсь с тем, лучше ли возвращать NULL или пустое значение из метода, когда возвращаемое значение отсутствует или не может быть определено. Возьмите следующие два метода в качестве примера: string ReverseString(string stringToReverse) // takes a string and reverses it....

123
Есть ли «реальная» причина, по которой множественное наследование ненавидят?

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

118
Критика и недостатки внедрения зависимости

Внедрение зависимостей (DI) является хорошо известным и модным паттерном. Большинство инженеров знают его преимущества, такие как: Обеспечение изоляции в модульном тестировании возможно / просто Явно определяющие зависимости класса Содействие хорошему дизайну (например, принцип единой...

109
Не использовать «статический» в C #?

Я отправил заявку, которую написал другим архитекторам, для проверки кода. Один из них почти сразу же ответил мне и сказал: «Не используйте« статические ». Вы не можете писать автоматические тесты со статическими классами и методами.« Статических »следует избегать». Я проверил и полностью четверть...

103
Разве принципы асинхронного / ожидающего использования в C # не противоречат понятиям хорошей архитектуры и многоуровневой абстракции?

Этот вопрос касается языка C #, но я ожидаю, что он охватит другие языки, такие как Java или TypeScript. Microsoft рекомендует лучшие практики по использованию асинхронных вызовов в .NET. Среди этих рекомендаций давайте выберем две: измените сигнатуру асинхронных методов, чтобы они возвращали Task...

95
Почему я должен использовать внедрение зависимости?

Я с трудом ищу ресурсы о том, почему я должен использовать внедрение зависимости . Большинство ресурсов, которые я вижу, объясняют, что он просто передает экземпляр объекта другому экземпляру объекта, но почему? Это только для более чистой архитектуры / кода или это влияет на производительность в...

92
Является ли хорошей идеей спроектировать архитектуру, полагая, что классы пользовательского интерфейса могут быть заменены интерфейсом командной строки?

На странице 25 Code Complete говорится, что неплохо иметь возможность легко заменить обычные классы пользовательского интерфейса на один из командной строки. Зная его преимущества для тестирования, как насчет проблем, которые он может принести? Окажется ли эта дополнительная работа действительно...

86
Почему Алан Кей сказал: «Интернет был так хорошо сделан, но сеть была сделана любителями»?

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

80
Как поддерживаются огромные библиотеки с открытым исходным кодом, в то время как код далек от практики «чистого кода»?

Я все еще неопытен для написания высококачественного кода, поэтому я читаю книги, посвященные такой проблеме, как « Чистый код » Роберта С. Мартина, и продолжаю проверять код известных библиотек, чтобы улучшить свои навыки. Хотя многие библиотеки с открытым исходным кодом поддерживаются годами, а...

80
Какова наиболее приемлемая стратегия транзакций для микросервисов?

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

80
Промежуточная среда против производственной среды

Я работаю в компании , где мы строим корпоративные приложения, и мы поддерживаем три среды: развитие (или Dev ), постановка (или стадии ) и производство (или прод ). Значение dev интуитивно понятно: это среда, используемая при разработке приложения. В чем разница между промежуточной и...

75
Как тренировать себя, чтобы не писать «умный» код? [закрыто]

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

74
Являются ли стеки единственным разумным способом структурирования программ?

Большинство архитектур, которые я видел, используют стек вызовов для сохранения / восстановления контекста перед вызовами функций. Это настолько распространенная парадигма, что операции push и pop встроены в большинство процессоров. Существуют ли системы, которые работают без стека? Если да, то как...

73
Советы по разработке веб-приложения со сроком службы более 40 лет

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

72
Как архитектуры микросервисных систем позволяют избежать узких мест в сети?

Я много читал о микросервисных архитектурах для серверных приложений и удивлялся, как использование внутренней сети не является узким местом или существенным недостатком по сравнению с монолитной архитектурой. Ради точности, вот мои интерпретации двух терминов: Монолитная архитектура: одно...

69
«Все это карта», я делаю это правильно?

Я смотрел выступление Стюарта Сьерры « Мышление в данных » и использовал одну из идей в качестве принципа дизайна в этой игре, которую я делаю. Разница в том, что он работает в Clojure, а я работаю в JavaScript. Я вижу некоторые основные различия между нашими языками в этом: Clojure - идиоматически...