Inyección de servicios en el controlador de directivas AngularJS directamente

Entiendo cómo funciona la inyección de dependencia angular con las directivas, pero quería una aclaración sobre algo. Tengo una directiva de prueba ficticia de la siguiente manera:

app.directive("test", [

  function() {

    return {
      restrict: "E",
      scope: {},
      controller: ["$scope", "$filter",
        function($scope, $filter) {
          var food = ["Apple pie", "Apple cobler", "Banana Split", "Cherry Pie", "Applesauce"];

          $scope.favorites = $filter('filter')(food, "Apple");
        }
      ],
      template: "<div>{{favorites}}</div>"
    }
  }
]);

Esto funciona bien y filtrará elfood matriz como se esperaba. Sin embargo, noté que si inyecto el$filter servicio en la directiva de la siguiente manera, todavía funciona:

app.directive("test", ["$filter",

  function($filter) {

    return {
      restrict: "E",
      scope: {},
      controller: ["$scope",function($scope) {...

Mi pregunta: ¿es una mejor práctica inyectar servicios en una directiva en la línea de declaración de la siguiente manera:

app.directive("test", ["$filter", function($filter) {

o en la línea del controlador así:

controller: ["$scope", "$filter", function($scope, $filter) {?

¿No hay diferencia? Aquí hay unSaqueador del código de la directiva.

Respuestas a la pregunta(2)

Su respuesta a la pregunta