Как Вы называете аргумент конструктора и членские переменные?

Вы можете легко сделать это с помощью zip, сместив элементы на одну запись, чтобы сравнить каждый из них со своим предшественником:

items  = (102, 109, 120, 80, 40, 30, 200, 90)
high   = 100
bounds = [ num for prev,num in zip((high-1,)+items,items) if (num<high)^(prev<high) ] 
result = list(zip(bounds[::2],bounds[1::2]))
print(result) # [(102, 80), (200, 90)]
8
задан Hemant 12 November 2015 в 18:21
поделиться

8 ответов

Я думаю решение, которое Вы описываете, где параметры конструктора тождественно называют, и Вы снабжаете префиксом участников класса this, очень хорошо. Это ясно, это кратко, и нет никакого беспорядка о том, что Вы имели в виду.

18
ответ дан 5 December 2019 в 06:39
поделиться

Я просто использую this подход; затем все мои переменные и поля отражают свое намерение. Не делайте X вещь - который просто ужасен;-p

4
ответ дан 5 December 2019 в 06:39
поделиться

Помещение X на Ваших параметрах как этот плохо. Конструктор является частью открытого интерфейса Вашего класса, и это только смутит пользователей Вашего класса. Некоторым нравится снабжать префиксом членские переменные символы нижнего подчеркивания, который намного лучше, поскольку это только видимо конструктору Вашего класса. Иначе использование этого как в Вашем втором примере будет достаточно.

0
ответ дан 5 December 2019 в 06:39
поделиться

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

3
ответ дан 5 December 2019 в 06:39
поделиться

Почему не только добавляют подчеркивание или однобуквенный префикс для Ваших переменных члена парламента, не занимающего официального поста. Если Вам не нравится та идея, что Вы сделали в своем втором блоке кода, в порядке.

0
ответ дан 5 December 2019 в 06:39
поделиться

m_foo для членов парламента, не занимающих официального поста
Foo для общественной собственности
foo для параметров и локальных переменных.

Я предпочитаю отличать область действия блока от расширенных участников объема, вот почему я придерживаюсь префикса.

0
ответ дан 5 December 2019 в 06:39
поделиться

Необходимо разделить их в некотором роде. Используя 'это'. слабая форма венгерской записи, таким образом, Вы могли бы также стиснуть зубы и использовать символы нижнего подчеркивания или 'm _'.

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

Заманчиво утверждать, что о подчеркивании можно забыть таким же образом как 'это'. был бы. Но это неправильно, потому что подчеркивание меняет имя переменной, таким образом, единственное место, об этом можно было возможно забыть, в определении, не в он - использование в файле. Принимая во внимание, что с 'этим'. префикс там не является никакой ошибкой компилятора, если Вы забываете это во время использования.

Независимо от того, что Вы выбираете, нет никакого венгра предотвращения в этой ситуации, используете ли Вы 'это'. или подчеркивание. Это не настолько плохо так или иначе, мы вынуждены условно использовать венгерский язык для имен интерфейса, имен элементов управления и вероятно других мест, о которых я не могу думать прямо сейчас.

-1
ответ дан 5 December 2019 в 06:39
поделиться

Краткий ответ:

Префикс элементы и параметры с « m_ » и « p_ ] "или" s_ ", если член статический.

Не украшайте properties или locals , и когда вы чувствуете, что должны назвать их то же самое (без учета регистра), разрешите конфликт, добавив к свойствам префикс "this.".

Объяснение:

Учтите, что существует как минимум ЧЕТЫРЕ (4) различные категории читаемых / назначаемых имен, которые необходимо различать: Локальные переменные , Переменные-члены (экземплярные и статические), Свойства и параметры метода . Все четыре категории могут отображаться в одном блоке кода, и поэтому каждая из них нуждается в четких отличительных характеристиках.

Значимый префикс может одновременно различать переменные и , раскрывать их область действия, например, m_ (член), s_ (статический), p_ (параметр), оставляя общедоступные свойства и локальные переменные оставались простыми без префиксов и без заботы о чувствительности к регистру. Если по какой-то причине вы должны назвать локальную переменную так же, как свойство без учета регистра, просто добавьте к этому свойству префикс «this».

Конфликты именования между локальными переменными и параметрами ] не встречаются, потому что они не могут иметь одно и то же имя (компилятор поймает повторяющееся определение). То же самое касается переменных-членов и свойств . Параметры и члены с префиксом «p_» и «m_» соответственно, не будут конфликтовать, а конфликты между локальными переменными без префикса и свойствами можно разрешить, добавив "this". к свойствам.

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

1
ответ дан 5 December 2019 в 06:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: