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

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

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

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

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

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

17
Лучше ли возвращать NULL или пустые значения из функций / методов, где возвращаемое значение отсутствует?
Я ищу рекомендацию здесь. Я борюсь с тем, лучше ли возвращать NULL или пустое значение из метода, когда возвращаемое значение отсутствует или не может быть определено. Возьмите следующие два метода в качестве примера: string ReverseString(string stringToReverse) // takes a string and reverses it. Person FindPerson(int personID) // finds a Person …

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

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

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

5
Разве принципы асинхронного / ожидающего использования в C # не противоречат понятиям хорошей архитектуры и многоуровневой абстракции?
Этот вопрос касается языка C #, но я ожидаю, что он охватит другие языки, такие как Java или TypeScript. Microsoft рекомендует лучшие практики по использованию асинхронных вызовов в .NET. Среди этих рекомендаций давайте выберем две: измените сигнатуру асинхронных методов, чтобы они возвращали Task или Task <> (в TypeScript это будет …
103 c#  architecture  async 

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

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

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.