Комментарии в Java используются для предоставления дополнительной информации о коде, который требует объяснения своего назначения. Даже если Вы не планируете, что код Вашей модели будут читать и пытаться понять другие пользователи, пишите комментарии для себя, тогда даже если Вы продолжите разработку модели спустя пару месяцев, Вы сможете легко вспомнить, как она работает, исправить в ней все необходимое или же дополнить ее новыми деталями. Написание хороших комментариев должно войти у Вас в привычку.
Вот пример бессмысленного комментария:
client = null; //делаем client равным null – бессмысленный комментарий
Он объясняет то, что итак понятно из кода. Вместо этого Вы могли бы объяснить смысл данного присваивания:
client = null; //забываем клиента – все операции завершены
В Java есть два типа комментариев: строчный комментарий и блочный комментарий.
Строчный комментарий начинается с двойного символа // (без пробелов между ними) - весь следующий за ним до конца данной строки текст рассматривается Java как комментарий:
//создаем новую фабрику
Plant plant = add_mills();
//помещаем ее где-то в выбранном регионе
double[]
loc = region.findLocation();
plant.setXY( loc[0], loc[1] );
//задаем параметры фабрики
plant.set_region( region );
plant.set_company( this
); //мы являемся владельцем
Java редактор AnyLogic отображает комментарии зеленым цветом, поэтому Вы можете легко отличить их от незакомментированного кода.
Блочный комментарий ограничивается символами /* и */. В отличие от строчного комментария, блочный комментарий может быть помещен в середине строки (или даже в середине выражения), а может охватывать несколько строк.
/* выплачиваем менеджерам продаж комиссионные
* по итогам квартальных продаж
*/
amount = employee.baseSalary + commissionRate *
employee.sales + bonus;
if(
amount > 200000 )
doAudit( employee ); /* проводим аудит для сверхкрупных платежей */
employee.pay( amount );
В процессе разработки модели Вам может понадобиться временно исключить фрагменты кода, например, для отладочных целей. Это может быть легко сделано с помощью комментариев. В приведенной ниже строке из выражения временно исключается часть, отвечающая за комиссионые (например, до тех пор, пока комиссионные не начнут учитываться в модели).
amount = employee.baseSalary /* + commissionRate * employee.sales */ + bonus;
Если Вы хотите исключить одну или несколько строк кода, имеет смысл поместить в начало этой строки (строк) строчные коментарии. В приведенном ниже фрагменте кода строка с вызовом функции ship() будет игнорироваться копилятором (обратите внимание, что эта строка уже содержит комментарий):
while( !
backlog.isEmpty() ) { //repeat
the code below while the backlog is not empty
Order order = backlog.getFirst(); //pick the first order in the
backlog
if(
order.amount <= inventory ) { //if enough inventory to
satisfy this order
//
ship( order ); //ship
inventory -= order.amount; //decrease
available inventory
backlog.removeFirst(); //remove
the order from the backlog
} else { //not enough inventory to ship
break; //stop order backlog
processing
}
}
Если исключается несколько строк, то лучше использовать блочный комментарий:
/*
while( ! backlog.isEmpty() ) { //repeat the code below while the
backlog is not empty
Order order = backlog.getFirst(); //pick
the first order in the backlog
if( order.amount <= inventory ) {
//if enough inventory to satisfy this order
//
ship( order ); //ship
inventory -= order.amount; //decrease available inventory
backlog.removeFirst(); //remove the order from the backlog
} else { //not enough inventory to ship
break; //stop order backlog processing
}
}
*/
Будьте внимательны при исключении кода с помощью комментариев: Вы невольно можете внести нежелательные изменения в соседний код. Давайте рассмотрим приведенный ниже фрагмент кода. Изначально планировалось выполнять аудит для каждого платежа, превышающего $200,000. Разработчик модели решил временно не выполнять проверку и закомментировал строку с вызовом функции doAudit(). Побочным эффектом такого действия стало то, что следующая строка кода стала частью оператора if, и платежи в такой модели будут производиться только тем служащим, которые заработали для компании более $200,000.
amount
= employee.baseSalary + commissionRate * employee.sales + bonus;
if(
amount > 200000 )
//
doAudit( employee );
employee.pay( amount );
Обратите внимание, что такой неприятной ситуации можно было бы избежать, заключи разработчик модели тело оператора if в фигурные скобки (т.е. сделав его блоком):
amount
= employee.baseSalary + commissionRate * employee.sales + bonus;
if(
amount > 200000 ) {
//
doAudit( employee );
}
employee.pay( amount );