Изучение плюсов и минусов
В пользу одинарных кавычек
elem.innerHTML = '<a href="' + url + '">Hello</a>';
elem.innerHTML = "<a href='" + url + "'>Hello</a>";
Кроме того, встроенный HTML обычно является анти-паттерном. Предпочитаю шаблоны.
myJson = '{ "hello world": true }';
Опять же, вам не нужно создавать JSON таким образом. JSON.stringify () достаточно часто. Если нет, используйте шаблоны.
В пользу двойных кавычек
В пользу обоих
В JavaScript нет разницы между ними. Поэтому вы можете использовать все, что удобно в данный момент. Например, следующие строковые литералы производят одну и ту же строку:
"He said: \"Let's go!\""
'He said: "Let\'s go!"'
"He said: \"Let\'s go!\""
'He said: \"Let\'s go!\"'
Одинарные кавычки для внутренних строк и двойные для внешних. Это позволяет отличать внутренние константы от строк, которые должны отображаться пользователю (или записываться на диск и т. Д.). Очевидно, вам следует избегать добавления последних в ваш код, но это не всегда можно сделать.
Если ваши аргументы одного типа, вы можете использовать varargs:
public int something(int... args) {
int a = 0;
int b = 0;
if (args.length > 0) {
a = args[0];
}
if (args.length > 1) {
b = args[1];
}
return a + b
}
, но таким образом вы проиграете семантика отдельных аргументов, или
имеет перегруженный метод, который передает вызов параметризованной версии
public int something() {
return something(1, 2);
}
, или если метод является частью какой-либо процедуры инициализации, вы можете вместо этого использовать шаблон построителя:
class FoodBuilder {
int saltAmount;
int meatAmount;
FoodBuilder setSaltAmount(int saltAmount) {
this.saltAmount = saltAmount;
return this;
}
FoodBuilder setMeatAmount(int meatAmount) {
this.meatAmount = meatAmount;
return this;
}
Food build() {
return new Food(saltAmount, meatAmount);
}
}
Food f = new FoodBuilder().setSaltAmount(10).build();
Food f2 = new FoodBuilder().setSaltAmount(10).setMeatAmount(5).build();
Затем работайте с объектом Food
int doSomething(Food f) {
return f.getSaltAmount() + f.getMeatAmount();
}
. Шаблон построителя позволяет вам добавлять / удалять параметры позже, и вам не нужно создавать для них новые перегруженные методы.
Вы можете выполнить это с помощью перегрузки метода .
public int doSomething(int arg1, int arg2)
{
return 0;
}
public int doSomething()
{
return doSomething(defaultValue0, defaultValue1);
}
Создавая этот метод без параметров, вы разрешаете пользователю вызывать метод с параметрами с аргументами по умолчанию, которые вы предоставляете в реализации метода без параметров. Это известно как перегрузка метода.
Вы не можете объявить значения по умолчанию для параметров, например, C # (я полагаю), позволяет вам, но вы можете просто создать перегрузку.
public int doSomething(int arg1, int arg2) {
//some logic here
return 0;
}
//overload supplies default values of 1 and 2
public int doSomething() {
return doSomething(1, 2);
}
Если вы собираетесь сделать что-то вроде этого Пожалуйста, сделайте одолжение всем остальным, кто работает с вашим кодом, и не забудьте упомянуть в комментариях Javadoc, какие значения по умолчанию вы используете!
Нет. Java не поддерживает параметры по умолчанию, такие как C ++. Вам необходимо определить другой метод:
public int doSomething()
{
return doSomething(value1, value2);
}
В Java невозможно установить значения по умолчанию. Мой предпочтительный способ справиться с этим - перегрузить метод, чтобы у вас могло получиться что-то вроде:
public class MyClass
{
public int doSomething(int arg1, int arg2)
{
...
}
public int doSomething()
{
return doSomething(<default value>, <default value>);
}
}
Вы можете перегрузить метод разными параметрами:
public int doSomething(int arg1, int arg2)
{
//some logic here
return 0;
}
public int doSomething(
{
doSomething(0,0)
}