DI: Сколько вводить?

Я пишу свое второе реальное приложение, которое использует DI. В целом я думаю, что это позволило улучшить дизайн. Но есть запахи кода, которые я не знаю, как решить.

Я предпочитаю использовать инъекцию конструктора и часто замечал, что мне нужно около 5 или более объектов, которые нужно внедрить в конструктор. Кажется, их слишком много, может быть, проблема в дизайне, неправильный SRP. Но я думаю, что виновато и мое использование DI.

Я ищу «лучшие практики» или «практическое правило», в общем, я, кажется, внедряю все, чего нет в структуре .Net ,

1: lock:
   btsl    $0, slp
   jnc     3
2: testb   $1, slp
   jne     2
   jmp     1
3: 

Изначально я думал, что иметь вложенные циклы расточительно, и можно было бы реализовать что-то вроде:

1: lock:
   btsl    $0, slp
   jc      1

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

] Единственное, о чем я не смог осмыслить, так это о последующем снятии блокировки вращения. В книге утверждается, что это дает следующее:

   lock:
   btrl    $0, slp

Мой вопрос в основном почему? Мне кажется, что комбинация блокировка / немедленное движение работает быстрее.

Вы не делаете этого. нет необходимости передавать старое состояние флагу переноса, поскольку, следуя правилу, что ядро ​​не содержит ошибок (предполагается во многих других местах внутри указанного ядра), Каковы критерии кода, который больше всего выигрывает от ...

Из блога Эрика Липперта Правда о типах значений ясно, что количество регистров может иметь большое влияние на производительность кода. Каковы критерии кода, который больше всего выигрывает от большего количества регистров в системах x64? Есть ли какие-нибудь хорошие примеры?

Мне ясно, что счетчик регистров - не единственный и даже не самый важный аспект платформы x64, но если есть такие критерии, должна ли платформа, на которой мы планируем запустить нашу code on влияют на то, как мы пишем наш код?

8
задан Manu 19 January 2011 в 08:45
поделиться