Я подозреваю, что Вы собираетесь ненавидеть этот ответ. Путем Вы делаете это в Python
# code here
if DEBUG:
#debugging code goes here
else:
# other code here.
, Так как Python является интерпретатором, нет никакого шага предварительной обработки, который будет применен, и никакое конкретное преимущество для наличия специального синтаксиса.
Использование Google Guice для упрощения модульного тестирования - это только важное преимущество. Некоторые люди могут даже не использовать модульное тестирование в своем проекте. Люди использовали Spring / Dependency Injection не только для модульного тестирования.
Низкоуровневое преимущество использования Google Guice заключается в сплоченности вашего приложения, ваши классы в проекте могут быть слабо связаны друг с другом. Я могу предоставить класс для другого класса, чтобы они не зависели друг от друга.
Рассмотрим этот пример:
public class A{
}
public class B{
A a = new A();
}
Класс B будет тесно связан с классом A, или, другими словами, он зависит от существования класса A.
Но с Guice я могу вместо этого сделать его слабо связанным следующим образом:
public class B{
private A a;
@Inject
public B(A a){
this.a = a;
}
}
Класс B теперь слабо связан с A, и Guice отвечает за предоставление экземпляра A вместо того, чтобы B создавать его. Благодаря этому вы можете расширить его, чтобы обеспечить интерфейс от A до B, и реализация может быть объектом Mock, если вы хотите модульное тестирование своих приложений.
Сказав, что мы пока обсуждаем только преимущества внедрения зависимостей. Помимо внедрения зависимостей, преимущества использования Google Guice следующие:
Это его обзор. Но чем глубже вы познакомитесь с Guice, тем больше будет в нем хорошего. простой реальный пример: если вы используете GWT с реализацией MVP , компоненты / виджеты в вашем GWT-приложении очень слабо связаны и не тесно интегрированы друг с другом.
так много всего хорошего в этом. простой реальный пример: если вы используете GWT с реализацией MVP , компоненты / виджеты в вашем GWT-приложении очень слабо связаны и не тесно интегрированы друг с другом. так много всего хорошего в этом. простой пример из реальной жизни: если вы используете GWT с реализацией MVP , компоненты / виджеты в вашем приложении GWT очень слабо связаны и не тесно интегрированы друг с другом.Для этого нет встроенного способа. Я бы рекомендовал упаковать ваш код в каталог и распространять его таким образом. Я делаю это с помощью PHP, я помещаю код в каталог «something.module», а затем перебираю каталог модулей, включая главный файл в каждом каталоге .module. Но для чего-то более простого вы можете просто иметь такую структуру:
my_package/
my_package.php
include1.php
include2.php
my_package.php
будет include (realpath (dirname (__ FILE __). '/Clue1.php'))
.
Возможно, вам стоит вернуться в прошлое и поближе взглянуть на проблемы, которые Guice хотел решить. Чтобы понять мотивы Guice, идеальной отправной точкой являются новости Bob Lee: I Don't Get Spring на TheServerSide.COM (и их комментарии). Затем продолжайте анонс Google Guice, Java Dependency Injection Framework (и комментарии) и Tech Talk: Боб Ли в Google Guice (и комментарии).
Лично я разделял опасения по поводу злого XML: ад конфигурации XML, XML и возможные ошибки времени выполнения, подверженные ошибкам и рефакторингу идентификаторы строк, и т. Д. И т. Д. На самом деле я считаю, что скептическое мнение о Spring и согласованности было хорошим для всех (включая Spring). Поэтому я был рад видеть нового игрока в среде DI framework. особенно современный фреймворк, использующий функции Java 5 (обобщения и аннотации для обеспечения безопасности типов).
И потому, что Google использует Guice в критически важных приложениях (почти каждое приложение на основе Java также является приложением на основе Guice: AdWords , Google Docs, Gmail и даже YouTube, как сообщает "Crazy" Боб Ли в Guice² ), я не могу поверить, что Guice полностью ошибается и не представляет никакой ценности. К сожалению, я не думаю, что Google предоставит много кода этих приложений в качестве примеров ... Но вы можете найти интересные вещи в списке приложений, использующих Guice и / или в списке третьего аддоны party Guice . Или посмотрите книги, упомянутые в Guice² . Или спросите Боба :)
И потому, что Google использует Guice в критически важных приложениях (почти каждое приложение на основе Java также является приложением на основе Guice: AdWords , Google Docs, Gmail и даже YouTube, как сообщает "Crazy" Боб Ли в Guice² ), я не могу поверить, что Guice полностью ошибается и не представляет никакой ценности. К сожалению, я не думаю, что Google предоставит много кода этих приложений в качестве примеров ... Но вы можете найти интересные вещи в списке приложений, использующих Guice и / или в списке третьего аддоны party Guice . Или посмотрите книги, упомянутые в Guice² . Или спросите Боба :)
И потому, что Google использует Guice в критически важных приложениях (почти каждое приложение на основе Java также является приложением на основе Guice: AdWords , Google Docs, Gmail и даже YouTube, как сообщает "Crazy" Боб Ли в Guice² ), я не могу поверить, что Guice полностью ошибается и не представляет никакой ценности. К сожалению, я не думаю, что Google предоставит много кода этих приложений в качестве примеров ... Но вы можете найти интересные вещи в списке приложений, использующих Guice и / или в списке третьего аддоны party Guice . Или посмотрите книги, упомянутые в Guice² . Или спросите Боба :)
Или посмотрите книги, упомянутые в Guice² . Или спросите Боба :) Или посмотрите книги, упомянутые в Guice² . Или спросите Боба :)