Ответ 1
Стоит отметить, что в Руководство разработчика во многих местах (включая связанные с "сервисами" раздел), разработчики AngularJS используют camelcase + первый строчный регистр имен служб и других вещей. Так что, может быть, вы считаете, что это лучшая практика для AngularJS.
Тем не менее, я думаю, что с других языков чаще всего называют сервисы и классы с помощью camelcase + first uppercase, и на самом деле, как выясняется в JavaScript, это, как представляется, имеет особое значение. Подумайте, что у вас есть класс с именем user
-then, что бы вы назвали переменной, которая содержит экземпляр user
? Вы не можете назвать его user
без особо неудобного/подверженного ошибкам теневого копирования.
В AngularJS ваши сервисы $resource
станут вашими классами в OO JavaScript "старых". Посмотрите:
angular.module('Foo', [], function() {}).factory('User', function() {
var User = $resource('/api/user');
User.prototype.getFullName = function() {
return this.firstName + ' ' + this.lastName;
};
return User;
});
Посмотрите, где я собираюсь? Вы в конце концов введете свой новый user
$resource
и выполните его экземпляр:
function MyController($scope, User) {
var someNewUser = new User();
};
Или вы захотите выполнить итерацию нескольких пользователей с использованием простого имени var, такого как user
для текущего элемента:
angular.forEach(someUsers, function(user) {
// Good thing you didn't name your $resource "user"!
// Weird/undesirable shadowing would result here then...
});
Сообщите мне, если вам нужно больше разъяснений относительно того, почему я считаю, что наилучшая практика - это сначала прописная буква для имен классов/сервисов с учетом контекста JavaScript. (Для сравнения, считайте, что в PHP имена переменных имеют префикс $
, поэтому тени не могут произойти между именами переменных и именами классов. $User = new User() отлично.)
Конечно, вы можете сделать User = new user()
в JS, но это будет примерно соответствовать стандартам существующих языков/руководств стиля.