System.out.println(0 + 'c'); //ASCII value of 'c'; will print 99
System.out.println(0 + 'a'); //ASCII value of 'a'; will print 97
System.out.println('c' - 'a'); //Difference of ASCII values of characters; will print 99-97=2
В вашем случае
inventory[ch - 'a']++;
ch
будет неким персонажем.
ch - 'a'
будет расстоянием этого символа от «а». Например, как показано выше, 'c' - 'a' = 2
.
inventory[ch - 'a']
будет указывать на номер по индексу ch - 'a'
в массиве.
inventory[ch - 'a']++
увеличит это значение на 1.
На самом деле я полностью полагаюсь на функциональность навигации своего IDE, т.е. Visual Studio. Большую часть времени я использую F12 для перехода к объявлению (или Shift-F12 для нахождения всех ссылок) и Ctrl +-для перехода назад.
Причина этого состоит в том, что большую часть времени я работаю над кодом, который я не написал сам, и я не хочу тратить свои методы переупорядочения времени и поля.
P.S.: И я также использую RockScroll, дополнение VS, которое делает навигацию и прокрутку больших файлов довольно легкими
Если у Вас действительно есть проблемы при прокрутке и нахождении, возможно, что Вы страдаете от синдрома класса бога.
Fwiw, я лично склонен идти с:
class
{
#statics (if any)
#constructor
#destructor (if any)
#member variables
#properties (if any)
#public methods (overrides, etc, first then extensions)
#private (aka helper) methods (if any)
}
И у меня нет отвращения к блокам региона, ни комментариев, поэтому свободно используйте обоих для обозначения отношений.
От моего (Java) точка зрения я сказал бы что конструкторы, открытые методы, закрытые методы, в том порядке. Я всегда пробую к групповым методам, реализовывая определенный интерфейс вместе.
Мое любимое предпочтительное оружие является ИДЕЕЙ IntelliJ, которая имеет некоторые хорошие возможности свернуть тела методов, таким образом, довольно легко отобразить два метода непосредственно друг выше друга, даже когда их фактическое положение в исходном файле является 700 строками независимо.
Я был бы осторожен с monkeying относительно с положением методов в фактическом источнике. Ваш IDE должен дать Вам способность просмотреть источник в способе, которым Вы хотите. Это особенно релевантно при работе над проектом, где разработчики могут использовать свой предпочтительный IDE.
Мой порядок, здесь это прибывает.
Я обычно помещал помехи сначала.
Затем приезжайте членские переменные и свойства, свойство, которое получает доступ к одному определенному участнику, группируется с этим участником. Я пытаюсь собрать в группу сопутствующую информацию, например, все строки, которые содержат информацию о пути.
Треть является конструктором (или конструкторы, если у Вас есть несколько).
После этого следуйте методам. Им приказывают тем, что кажется логичным для того определенного класса. Я часто методы группы их уровнем доступа: частный, защищенный, общественность. Но у меня недавно был класс, который должен был переопределить много методов от его базового класса. Так как я делал большую работу там, я соединил их в одной группе, независимо от их уровня доступа.
Моя рекомендация: Закажите свои классы так, чтобы это помогло Вашему рабочему процессу. Просто не заказывайте им, только чтобы иметь порядок. Время, проведенное на упорядочивании, должно быть инвестициями, которые помогают Вам сэкономить больше времени, когда необходимо было бы иначе прокрутить вверх и вниз.
В C# я использую #region
для разделения тех групп друг от друга но это - вопрос вкуса. Существует много людей, которым не нравятся регионы. Я делаю.
Я помещаю новый метод, который я просто создал сверху класса. Тот путь, когда я открываю проект, я вернулся в последнем методе, который я разрабатываю. Легче для меня для возвращения "в зоне".
Это также отразило то, что метод (который использует другие методы) я просто создал, верхний слой других методов.
Связанные с группой функции вместе, не будь трудно помещать все закрытые функции внизу. Аналогично, подражайте объяснению дизайна свойств C#, связанные функции должны быть в непосредственной близости друг от друга, конструкция языка C# для свойств укрепляет ту идею.
Несколько лет назад я провел слишком много времени, обдумывая этот вопрос и придумал страшно сложную систему для упорядочивания объявлений в классе. Порядок зависел бы от спецификатора доступа, были ли метод или поле статическими, переходными, энергозависимыми и т.д.
Это не стоило того. По моему скромному мнению, Вы не извлекаете реальной пользы из такого сложного расположения.
Что я делаю в наше время намного более просто:
я вполне уверенный был дополнением Visual Studio, которое могло переупорядочить участников класса в коде.
так т.е. ctors на вершине класса затем статические методы затем методы экземпляра... что-то как этот
к сожалению, я не могу помнить название этого дополнения! я также думаю, что это дополнение было бесплатно! возможно, кто-то другой может выручить нас?