Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Двойные или одинарные кавычки? (https://javascript.ru/forum/misc/28463-dvojjnye-ili-odinarnye-kavychki.html)

DreamTheater 21.05.2012 00:23

Двойные или одинарные кавычки?
 
Некоторые языки программирования по-разному обрабатывают строки в двойных и одинарных кавычках (например, PHP), поэтому применение тех или иных имеет определенный смысл в разных ситуациях. В Java допускаются только двойные кавычки, поэтому тут выбора нет. А в нашем с вами JavaScript можно использовать как двойные, так и одинарные, причем без всякой функциональной разницы.

По поводу того какие кавычки использовать предпочтительнее в JavaScript никакая конвенция не указывает (или же я не нашел). Хотелось бы услышать обоснованные аргументы в пользу или против тех или иных кавычек.

PS. Также можно обсудить размер отступов (4 пробела против 2) и "пробелы против табуляций".

DreamTheater 21.05.2012 00:36

jQuery использует двойные, но большинство других библиотек и фреймворков использует одинарные. Вот например создатель Node.js почему-то категорически против двойных кавычек.

DreamTheater 21.05.2012 00:42

Цитата:

Сообщение от nasqad (Сообщение 175686)
И я люблю табы, я так и не понял как их включить в phpstorm`e так что мучаюсь с пробелами. В любой IDE пробелы все равно сьезжают и пока не форматнешь, так и остается один прбел лишний раздражающий кошмар где нибудь.


Джэксон 21.05.2012 16:21

Я люблю одинарные кавычки. Не знаю почему. Просто нравятся и всё. Пока всё работает (и я надеюсь будет работать и потом).

Раед 21.05.2012 16:37

В JS обычно использую одинарные кавычки. Сложно сказать почему, просто привык.
По поводу отступов, 1 пробел. Это быстрее чем 2 пробела и меньше чем один таб => выглядит как-то эстетичнее

bes 21.05.2012 18:05

Лично для меня строковые значения в одинарных кавычках в скриптах выглядят эстетичнее, а в двойных, действительно, стало привычнее видеть значения атрибутов тегов.
А вот насчёт пробелов и табуляций, я однозначно за два пробела, табуляции - это ужасно каждый раз перелистывать влево-вправо, чтобы посмотреть код.

melky 21.05.2012 18:35

я начал ненавидить табы, когда у меня код поплыл при коммите в гит.\ плыл, когда я постил его на форум. после этого я всегда пишу пробелами, и я уверен, что оно будет везде выглядеть одинаково.

кстати, давайте взвесим количество "пустого места" в отступах. кому как нравится, 4 пробела, или 2 пробела? какие "за" и "против"?

для удобства сравнения, приведу оба стиля тут. код взят из jQuery.

Пример: 4 символа
// Fire callbacks
fire = function (data) {
    memory = options.memory && data;
    fired = true;
    firingIndex = firingStart || 0;
    firingStart = 0;
    firingLength = list.length;
    firing = true;
    for (; list && firingIndex < firingLength; firingIndex++) {
        if (list[firingIndex].apply(data[0], data[1]) === false && options.stopOnFalse) {
            memory = false; // To prevent further calls using add
            break;
        }
    }
    firing = false;
    if (list) {
        if (stack) {
            if (stack.length) {
                fire(stack.shift());
            }
        } else if (memory) {
            list = [];
        } else {
            self.disable();
        }
    }
}

Пример: 2 символа
// Fire callbacks
fire = function (data) {
  memory = options.memory && data;
  fired = true;
  firingIndex = firingStart || 0;
  firingStart = 0;
  firingLength = list.length;
  firing = true;
  for (; list && firingIndex < firingLength; firingIndex++) {
    if (list[firingIndex].apply(data[0], data[1]) === false && options.stopOnFalse) {
      memory = false; // To prevent further calls using add
      break;
    }
  }
  firing = false;
  if (list) {
    if (stack) {
      if (stack.length) {
        fire(stack.shift());
      }
    } else if (memory) {
      list = [];
    } else {
      self.disable();
    }
  }
}

*трудно решить, что удобнее :)*

кавычки употребляю обоих видов. чаще всего одинарные, но когда нужно делать конкатенацию, то юзаю двойные (их лучше видно)

Раед 21.05.2012 18:55

melky,
Я вообще за 1 пробел.
1) Его быстрее ставить
2) 2 - ещё куда не шло, но 4 - это много. Слишком большой отступ и читабельность только снижается

bes 21.05.2012 19:26

Пробел является наверное самым используемым символом, для тех, кто нормально печатает всеми пальцами (рук), проблем с тем, чтобы нажать два раза большим пальцем по пробелу возникать не должно.
Смысла использовать 4 пробела вообще не видно (и читабельность, на мой взгляд, хуже), 1 пробел всё-таки, также, на мой взгляд менее читабельно, у кого проблема с лишними пробелами, то это проблема в первую очередь сред разработки, а потом уже разработчика.
2 пробела самое милое дело (читабельно, аккуратно и глазом контролируемо), а табуляция это вообще плохой стиль оформления кода, но в принципе каждому своё.

9xakep 21.05.2012 19:26

Я пробелы на протяжении всей работы над скриптом вообще не ставлю, потому что не путаюсь где что и как. А когда заканчиваю, иду в jsbeutefer.com (название сайта может неправильное, в гугле забейте) И там уже все настроиваю.

Насчет кавычек:
обычно ставлю одиночные, но при таком случае ,например:
eval("document.getElementById('asd')");

Так красивее чтоли...

bes 22.05.2012 12:21

Даже если бы у всех одинаково были настроены табуляции (что вряд ли), длинные расстояния хуже визуально оцениваются, плюс табуляцию не видно среди пробелов и не очень-то приятно, когда ты нажимаешь на backspace, а курсор вместо одной позиции смешается на х знает сколько (теряется контроль над ситуацией).
Не вижу никакой сложности в том, чтобы нажать два раза на пробел вместо одной табуляции (повторюсь, что пробел это один из самых используемых символов (потом наверное идёт backspace для тех, кто делает много ошибок), поэтому сложностей с его лишним нажатием быть не должно.

melky 22.05.2012 12:23

Цитата:

Сообщение от Maxmaxmахimus
а почему 2 прбела то? это же 2 нажатия кнопки!!

например если у тебя двойная вложенность то

if( 1 ) {
>>if( 1 ) {
>>>>alert( 1 );
>>}
}

то че по вашему нормально? писать по 4 пробела сидеть?

заменяешь табы на 2 пробела, и оливье.

похоже, ты меня переубедил... поставлю в виме НЕзамену таба пробелами :) проблем то.
Пример: Таб вместо пробела
// Fire callbacks
fire = function (data) {
	memory = options.memory && data;
	fired = true;
	firingIndex = firingStart || 0;
	firingStart = 0;
	firingLength = list.length;
	firing = true;
	for (; list && firingIndex < firingLength; firingIndex++) {
		if (list[firingIndex].apply(data[0], data[1]) === false && options.stopOnFalse) {
			memory = false; // To prevent further calls using add
			break;
		}
	}
	firing = false;
	if (list) {
		if (stack) {
			if (stack.length) {
				fire(stack.shift());
			}
		} else if (memory) {
			list = [];
		} else {
			self.disable();
		}
	}
}

nerv_ 22.05.2012 12:25

Цитата:

Сообщение от 9xakep
Я пробелы на протяжении всей работы над скриптом вообще не ставлю

ты думаешь, что это правильно? )

За себя скажу: шлепаю табами, т.к. одно нажатие вместо n, да и просто привык.

Цитата:

Сообщение от melky
я начал ненавидить табы, когда у меня код поплыл при коммите в гит.\ плыл

[при необходимости] заменить в редакторе на пробелы не пробовал? )

Кавычки ставлю одинарные, по двум причинам:
- нет нужды жать шифт
- проще читается (для меня)
Третьим аргументом в их пользу может служить мысль высказанная ранее:
Цитата:

Сообщение от nasqad
Двойные кавычки забрал себе html

А еще я леплю "лишние" пробелы :) Например, вместо
if (list[firingIndex].apply(data[0], data[1]) === false && options.stopOnFalse) {
// пишу
if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {

Насчет последнего, не уверен, что буду придерживаться и дальше.

Кстати, вопрос melky, ты все еще пишешь в Notepad++? )

melky 22.05.2012 12:45

Цитата:

Сообщение от nerv_
[при необходимости] заменить в редакторе на пробелы не пробовал? )

написал, пробовал. ты плохо читал пост :)
Цитата:

Сообщение от nerv_
А еще я леплю "лишние" пробелы Например, вместо

это не ты случайно JQ писал ? (шутко)

(пример кода оттуда. чтобы на ссыль не кликать)
if ( jQuery.isFunction( html ) ) {
			return this.each(function(i) {
				jQuery(this).wrapAll( html.call(this, i) );
			});
		}

		if ( this[0] ) {
			// The elements to wrap the target around
			var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);

			if ( this[0].parentNode ) {
				wrap.insertBefore( this[0] );
			}


Цитата:

Сообщение от nerv_
Кстати, вопрос melky, ты все еще пишешь в Notepad++? )

о нет,я уже как месяц-полтора пишу только в Vim. (точнее, в gVim).

nerv_ 22.05.2012 13:06

понятно. А я в одну темку из notepad++ влюбился, Odsidian называется.

razerxxx 22.05.2012 15:49

Ставлю табы - но vim автоматически заменяет их на 4 пробела (сам так настроил, вообще-то для python-а изначально, но и для javascript менять не стал). Кавычки любые.

Раед 22.05.2012 16:52

Цитата:

Сообщение от nerv_
А я в одну темку из notepad++

Как мало я знаю о Notepad++...

melky 22.05.2012 18:57

Цитата:

Сообщение от nerv_
понятно. А я в одну темку из notepad++ влюбился, Odsidian называется.

а я остановился на mustang

DreamTheater 22.05.2012 21:47

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 176103)
а я как нормальные пасоны крякнул вебшторм))

Нормальные пасоны зарабатывают достаточно для того чтобы не красть :)

beard 22.05.2012 21:52

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

melky 22.05.2012 22:40

Цитата:

Сообщение от beard (Сообщение 176115)
А чем лучше темная схема от светлой, я всегда пользуюсь тупо светлой черным по белому, но сегодня оком окинув всех прогеров оказывается черная более популярна. Никогда не юзал, это не утомляет глаза? Всетаки когда черным по белому привычнее, да и думаю лучше, вот даже форум черным по белому:)

у меня весь десктоп такой.

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

кстати, может дело в психологии?

DreamTheater 22.05.2012 22:42

Цитата:

Сообщение от melky (Сообщение 176121)
кстати, может дело в психологии?

Наоборот, я когда-то читал что темные тона повышают общую утомляемость.

DreamTheater 22.05.2012 23:28

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 176130)
Я мог бы его и купить)

Значит дело в привычке? :) После установки Убунты случайно не ищете на автомате активатор? :D

nerv_ 22.05.2012 23:38

Использую данную цветовую схему, т.к. от нее (на мой взгляд) меньше устают глаза.

Кстати, раз уж тема почти что флудовая, предлагаю устроить опрос: "кто какую схему использует" и условно разделить их на две:
1) темный текст на светлом фоне
2) светлый текст на темном фоне

у меня 2 :)

DreamTheater 22.05.2012 23:41

Цитата:

Сообщение от nerv_ (Сообщение 176136)
Использую данную цветовую схему, т.к. от нее (на мой взгляд) меньше устают глаза.

Кстати, раз уж тема почти что флудовая, предлагаю устроить опрос, кто какую схему использует и условно разделить их на две:
1. темный текст на светлом фоне
2. светлый текст на темном фоне

мой номер 2 :)

Номер 1 однозначно.

Раед 22.05.2012 23:58

Цитата:

Сообщение от nerv_
1) темный текст на светлом фоне
2) светлый текст на темном фоне

1
Вы этого не видели

melky 23.05.2012 00:08

лучше голосование устройте. как потом подсчитывать - вручную ?

nerv_ 23.05.2012 00:15

melky, можно на счетах :D Тему создавал не я и голосование в ней устроить не могу. Еще можно подводить предварительные итоги :) Давай ставь двойку, а то мы проигрываем :lol:

melky 23.05.2012 00:18

Цитата:

Сообщение от nerv_ (Сообщение 176145)
melky, можно на счетах :D Тему создавал не я и голосование в ней устроить не могу. Еще можно подводить предварительные итоги :) Давай ставь двойку, а то мы проигрываем :lol:

не вопрос :)

Цитата:

Сообщение от nerv_ (Сообщение 176136)
Кстати, раз уж тема почти что флудовая, предлагаю устроить опрос: "кто какую схему использует" и условно разделить их на две:
1) темный текст на светлом фоне
2) светлый текст на темном фоне

использую 2.

beard 23.05.2012 00:43

Цитата:

Сообщение от melky
лучше голосование устройте. как потом подсчитывать - вручную ?

:)

1

bes 30.08.2014 13:16

лучше
- двойные кавычки
- табуляция шириной в 4 пробела
- светлый текст на тёмном фоне

kobezzza 30.08.2014 14:04

Использую одинарные кавычки (в своё время взял из стандарта кода Google и привык).

Цитата:

- табуляция шириной в 4 пробела
- светлый текст на тёмном фоне
Согласен.

Aetae 30.08.2014 14:11

Одинарные для js, двойные для html. Мир и гармония.)

bes 30.08.2014 14:13

Цитата:

Сообщение от kobezzza
Использую одинарные кавычки (в своё время взял из стандарта кода Google и привык).

использую двойные кавычки (поработал с java и привык) :)

вывод:

melky 30.08.2014 15:04

Одинарные в JS, одинарные в HTML (jade)


Для двойных нужно тянуться к SHIFT.

Octane 30.08.2014 16:21

Popular Coding Convention on Github

bes 30.08.2014 22:12

Цитата:

Сообщение от melky
Для двойных нужно тянуться к SHIFT

ты shift каким пальцем какой руки жмёшь, когда двойные кавычки хочешь поставить?

Цитата:

Сообщение от Octane
Popular Coding Convention on Github

Цитата:

6.635 %
First comma
based on 1,735,448 commits
никогда бы сам не догадался, что есть такие люди на белом свете :)

Цитата:

80.63 %
Space
19.37 %
Tab
based on 3,197,316 commits
:blink:
помнится toad при вставке тоже всё в пробелы превращает, хотя при ручном вводе используется настройка на табуляции
в итоге начинаешь плохо думать про лягушек :D

Цитата:

56.728 %
Single quote
43.272 %
Double quotes
примерно равновесие

Octane 30.08.2014 22:21

Я форматировал табами, пока не стал пользоваться Sublime Text, в нем совершенно не ощущаешь никаких неудобств использования пробелов, Backspace удаляет 4 (ну или сколько настроено) пробелов, в отличие от WebStorm.

BETEPAH 30.08.2014 22:46

Цитата:

Сообщение от Aetae
Одинарные для js, двойные для html

аналогично

Sweet 30.08.2014 22:57

Использую двойные кавычки, потому что они более брутальные! Но сейчас не об этом. Вот что меня реально раздражает, так это когда отступы не используют. Сейчас в половине тем - код без отступа. Как пример. Они, блеать, в блокноте что ли пишут, я не пойму?! :-/
Кстати, я вот думаю, что хорошо, если в стандарте языка полностью форматирование прописано. Например,
if (true)

Не поставил пробел - синтаксическая ошибка. Это, конечно, я утрирую. Но к стилю ведь привыкаешь, и ориентироваться в коде легче становится.


Часовой пояс GMT +3, время: 20:59.