Swift-style-guide: Использование себя

Созданный на 10 июн. 2014  ·  28Комментарии  ·  Источник: raywenderlich/swift-style-guide

При написании кода Swift я ловлю себя на том, что много печатаю self.propertyName и self.method() . Но в Swift (как и в C++, C# и Java) использование self не обязательно, если только вы не пытаетесь разрешить неоднозначную ситуацию.

Я предлагаю не использовать self , кроме как для этой цели.

Самый полезный комментарий

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

Все 28 Комментарий

Я согласен, и я также согласен, что это будет немного сложно в начале :)

Я согласен с обоими этими соглашениями.

Так что долой себя, если только компилятор не скулит по этому поводу!

отправлено из моего Айфона

10 июня 2014 г., в 5:48, [email protected] написал:

Я согласен, и я также согласен, что это будет немного сложно в начале :)


Ответьте на это письмо напрямую или просмотрите его на GitHub.

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

Разве вы не согласны, ребята?

Во вторник, 10 июня 2014 г., [email protected] написал:

Я согласен с обоими этими соглашениями.

Так что долой себя, если только компилятор не скулит по этому поводу!

отправлено из моего Айфона

10 июня 2014 г., 5:48, Чезаре < [email protected]
<_e i="16">

Я согласен, и я также согласен, что это будет немного сложно в начале :)


Ответьте на это письмо напрямую или просмотрите его на GitHub.


Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/raywenderlich/swift-style-guide/issues/7#issuecomment -45607945
.

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

Многие редакторы, которыми я пользовался, выделяют их по-разному. Надеюсь, Xcode последует за этой функцией.

Я бы использовал только self для устранения неоднозначности.

Разве руководство не нацелено на наши книги и учебные пособия? Я все еще думаю, используя себя
более читабелен (но я знаю, что Apple его не использует, поэтому в конце концов мы
тоже не пользуюсь)...

Во вторник, 10 июня 2014 г., [email protected] написал:

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

Многие редакторы, которыми я пользовался, выделяют их по-разному. С надеждой
Xcode последует за этой функцией.

Я бы использовал только self для устранения неоднозначности.


Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/raywenderlich/swift-style-guide/issues/7#issuecomment -45625271
.

Согласен, что мы должны отказаться self

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

Я знаю, что сказал «долой себя», и думаю, что до сих пор так думаю, но я только что посмотрел код в игровом шаблоне Swift Sprite Kit. Это GameViewController использует self.view и self.classForKeyedUnarchiver. Итак, это пример свойства и стандартного метода, оба используют self.

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

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

Хорошая точка зрения. Вероятно, нам также следует везде добавлять точки с запятой. ;)

--------- Исходное сообщение --------- Тема: Re: [руководство по быстрому стилю] Использование себя (#7)
От: "Мэттейс Холлеманс" [email protected]
Дата: 11.06.14 3:19
Кому: "raywenderlich/swift-style-guide" [email protected]
Копия: "elephantronic" [email protected]

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

Я считаю, что self делает код более понятным. Это позволяет очень легко узнать, является ли это свойством или переменной экземпляра. По той же причине я голосую за то, чтобы всегда использовать self в objc для свойств, а не использовать их переменную экземпляра _propertyName.

self определенно делает его более понятным при чтении фрагмента кода. Настоящий вопрос заключается в том, стоит ли эта дополнительная ясность того.

Если вы набираете код, который компилируется, он компилируется. Swift не позволяет вам компилировать код, который неявно скрывает другую переменную/функцию из другой области, поэтому нам не нужно говорить self, потому что, если метод является единственным в области видимости, он будет скомпилирован. Если он находится на другом объекте _и_ этом объекте, он не сможет скомпилироваться, пока вы не укажете, какой из них вы хотите (используя self, если необходимо)

Obj-C — единственный язык, который я когда-либо видел, который просит людей указать, что они владеют тем, чем явно владеют, поэтому хорошо, что Swift покончил с этим.

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

--------- Исходное сообщение --------- Тема: Re: [руководство по быстрому стилю] Использование себя (#7)
От: "ecerney" уведомления@github.com
Дата: 12.06.14 13:17
Кому: "raywenderlich/swift-style-guide" [email protected]
Копия: "elephantronic" [email protected]

Я считаю, что self делает код более понятным. Это позволяет очень легко узнать, является ли это свойством или переменной экземпляра. По той же причине я голосую за то, чтобы всегда использовать self в objc для свойств, а не использовать их переменную экземпляра _propertyName.
-
Ответьте на это письмо напрямую или просмотрите его на GitHub.

Я постоянно не согласен с этой темой.

Этот стиль предназначен для авторов учебных пособий и книг, а не для
общее руководство по стилю Swift.

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

В четверг, 12 июня 2014 г., веб -сайт [email protected] написал:

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

Если вы набираете код, который компилируется, он компилируется. Swift не позволяет компилировать
код, который неявно скрывает другую переменную/функцию из другой области, поэтому
нам не нужно говорить self, потому что если метод единственный в области видимости,
он будет компилироваться. Если он находится на другом объекте _и_ этом объекте, он потерпит неудачу
для компиляции, пока вы не укажете, какой из них вы хотите (используя self, если
необходимый)

Obj-C — единственный язык, который я когда-либо видел, который просит людей указать, что
они владеют тем, чем явно владеют, так что хорошо, что Swift покончил с
Это.

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

--------- Исходное сообщение --------- Тема: Re: [руководство по быстрому стилю]
Использование себя (# 7)
От: "ecerney" < [email protected]
<_e i="31"/> Дата: 12.06.14 13:17
Кому: "raywenderlich/swift-style-guide" <
руководство по быстрому стилю@noreply.github.com
<_e i="36"/> Копия: "elephantronic" < [email protected]
<_e i="39">

Я считаю, что self делает код более понятным. Это позволяет очень легко узнать
будь то свойство или переменная экземпляра. По той же причине я всегда голосую за
использовать self в objc для свойств, а не использовать их переменную экземпляра

_Имя свойства.

Ответьте на это письмо напрямую или просмотрите его на GitHub.


Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/raywenderlich/swift-style-guide/issues/7#issuecomment -45927747
.

Я написал довольно популярный туториал по Unity. Он использует C # и не использует selfs. Я не слышал жалоб на то, что люди не понимают, откуда берутся переменные.

--------- Исходное сообщение --------- Тема: Re: [руководство по быстрому стилю] Использование себя (#7)
От: "Марин Тодоров" [email protected]
Дата: 12.06.14 14:16
Кому: "raywenderlich/swift-style-guide" [email protected]
Копия: "elephantronic" [email protected]

Я постоянно не согласен с этой темой.

Этот стиль предназначен для авторов учебных пособий и книг, а не для
общее руководство по стилю Swift.

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

В четверг, 12 июня 2014 г., веб -сайт [email protected] написал:

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

Если вы набираете код, который компилируется, он компилируется. Swift не позволяет компилировать
код, который неявно скрывает другую переменную/функцию из другой области, поэтому
нам не нужно говорить self, потому что если метод единственный в области видимости,
он будет компилироваться. Если он находится на другом объекте _и_ этом объекте, он потерпит неудачу
для компиляции, пока вы не укажете, какой из них вы хотите (используя self, если
необходимый)

Obj-C — единственный язык, который я когда-либо видел, который просит людей указать, что
они владеют тем, чем явно владеют, так что хорошо, что Swift покончил с
Это.

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

--------- Исходное сообщение --------- Тема: Re: [руководство по быстрому стилю]
Использование себя (# 7)
От: "ecerney" < [email protected]
<_e i="40"/> Дата: 12.06.14 13:17
Кому: "raywenderlich/swift-style-guide" <
руководство по быстрому стилю@noreply.github.com
<_e i="45"/> Копия: "elephantronic" < [email protected]
<_e i="48">

Я считаю, что self делает код более понятным. Это позволяет очень легко узнать
будь то свойство или переменная экземпляра. По той же причине я всегда голосую за
использовать self в objc для свойств, а не использовать их переменную экземпляра

_Имя свойства.

Ответьте на это письмо напрямую или просмотрите его на GitHub.

Аргумент "компилируется, значит все в порядке" слаб. Думаю, мы должны найти свой стиль и придерживаться его. Не секрет, что я предпочитаю удобочитаемость, а не несколько клавиш для ввода, когда дело доходит до руководств. Я голосую за использование self.

Да !!! Чезаре на стороне удобочитаемости! Мы можем сделать это!

еще 4 года! еще 4 года!

Я имею в виду - использование self для переменных класса!

В четверг, 12 июня 2014 г., [email protected] написал:

Аргумент "компилируется, значит все в порядке" слаб. Я думаю, мы должны найти
наш стиль и придерживаться его. Не секрет, что я предпочитаю удобочитаемость
еще несколько клавиш для ввода, когда дело доходит до учебников. Я голосую за использование self.


Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/raywenderlich/swift-style-guide/issues/7#issuecomment -45931720
.

Хорошо, а как насчет этого аргумента?

Принудительное использование self — это одна из вещей, которые Apple убрала при создании Swift, потому что они увидели, насколько это глупо, и заметили, что ни один другой язык в мире не нуждается в этом, и, похоже, всех это устраивает, верно? Если бы Apple захотела, они легко могли бы включить self в качестве обязательной части языка. Они решили не делать этого по той очень веской причине, что это совершенно не нужно, а написание ненужных дополнений в коде обычно делает вещи менее читабельными в долгосрочной перспективе.

Obj-C был языком, построенным поверх другого языка. Такие вещи, как self, использовались, чтобы помочь синтаксису скобок указать функцию Obj-C по сравнению с функцией C. Компилятор не понимал настоящие классы и тому подобное, поэтому ему пришлось создать специальный синтаксис, чтобы обмануть его.

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

Отпустите оковы прошлого и примите будущее. Вы почувствуете себя лучше.

--------- Исходное сообщение --------- Тема: Re: [руководство по быстрому стилю] Использование себя (#7)
От: "Чезаре" [email protected]
Дата: 12.06.14 14:44
Кому: "raywenderlich/swift-style-guide" [email protected]
Копия: "elephantronic" [email protected]

Аргумент "компилируется, значит все в порядке" слаб. Думаю, мы должны найти свой стиль и придерживаться его. Не секрет, что я предпочитаю удобочитаемость, а не несколько клавиш для ввода, когда дело доходит до руководств. Я голосую за использование self.
-
Ответьте на это письмо напрямую или просмотрите его на GitHub.

Я понимаю вашу точку зрения, @elephantronic, и я могу с вами согласиться, но через 1-2 года. Единственная причина, по которой я предлагаю использовать себя, заключается в том, что мне (и я подозреваю, что многим другим людям) трудно полностью забыть о прошлом. Если вы являетесь разработчиком Objc, вы привыкли к себе, если нет, вам НУЖНО уметь читать (если не писать) код Objc. В любом случае само появляется. Так что я голосую за использование self "на данный момент" и предлагаю рассмотреть этот вопрос примерно через год, когда все получше познакомятся с языком.

Я голосую за то, чтобы не использовать self . Я согласен с @funkyboy , что поначалу это сложно. Но я также думаю, почему я должен использовать одно и то же имя как для экземпляра var, так и для локального var, а затем пытаться разрешить двусмысленность? Насколько я понимаю из того, что упомянул @hollance ( self.propertyName ), речь идет не об устранении двусмысленности или удобочитаемости; речь идет о привычке, которую мы получили от ObjC, и, по-видимому, в Swift она больше не нужна. Я вижу self в Swift как последнее средство: т.е. компилятор жалуется.

Есть ли смысл ставить это на голосование? Я думаю, что были некоторые хорошо продуманные аргументы с каждой стороны.

Я +1 за то, что не использую self там, где это не требуется.

Я также +1 за то, что не использую self , когда это не требуется. Хотя я понимаю опасения Мартина, я также довольно много занимаюсь разработкой для Android и _очень_ редко вижу this в коде, хотя иногда он прерывается, чтобы прояснить что-то или разрешить конфликт, это намного более очевидно, чем вы думаете, когда используете «свойство» вместо локальной переменной.

Я увидел Go, когда впервые посмотрел на Swift, но чем дольше и внимательнее смотрю, тем больше вижу Java.

+1 самоотверженный

Достаточно справедливо, я принимаю демократический вердикт :)
Укажу на несоответствие. Не используя себя, я могу сделать вывод, что один из принципов, на которых основано руководство, заключается в том, что «не пишите это, если в этом нет необходимости». Мне это может не нравиться, но если это соответствует всем рекомендациям, я принимаю это. Я все еще думаю, что это негативно влияет на читабельность.
Тот же принцип соответствует нашему решению о выводе типов: не пишите тип «потому что он не нужен».
Если мы применим тот же принцип к инициализаторам, то мы должны подавить внешние имена для инициализаторов. Угадай почему? Потому что "они не нужны". Если мы «пойдем по минимуму», давайте сделаем это, но тотально.

Мы договорились не писать тип, потому что он не нужен.

Мы согласились использовать значения Swift по умолчанию для имен параметров, потому что это значение по умолчанию, и нет смысла делать что-то отличное от того, что Swift хочет, чтобы вы делали в этих случаях. Чтобы исключить имена параметров, вы должны написать _дополнительный_ код, а затем объяснить его.

--------- Исходное сообщение --------- Тема: Re: [руководство по быстрому стилю] Использование себя (#7)
От: "Чезаре" [email protected]
Дата: 12.06.14 18:30
Кому: "raywenderlich/swift-style-guide" [email protected]
Копия: "elephantronic" [email protected]

Достаточно справедливо, я принимаю демократический вердикт :)
Укажу на несоответствие. Не используя себя, я могу сделать вывод, что один из принципов, на которых основано руководство, заключается в том, что «не пишите это, если в этом нет необходимости». Мне это может не нравиться, но если это соответствует всем рекомендациям, я принимаю это. Я все еще думаю, что это негативно влияет на читабельность.
Тот же принцип соответствует нашему решению о выводе типов: не пишите тип «потому что он не нужен».
Если мы применим тот же принцип к инициализаторам, то мы должны подавить внешние имена для инициализаторов. Угадай почему? Потому что "они не нужны". Если мы «пойдем по минимуму», давайте сделаем это, но тотально.
-
Ответьте на это письмо напрямую или просмотрите его на GitHub.

self — это просто шум в Swift, убей его. Мы будем адаптироваться.

Здравствуйте, извините, что оживляю мертвую тему.

Я хотел бы знать, как вы себя чувствуете после того, как избавились self ? Ты в порядке сейчас? Были ли какие-то особые проблемы с читабельностью?

Я бросил это и никогда не оглядывался назад. :)

Книги и учебники raywenderlich.com бескорыстны уже 4 года, и ни у кого не было конкретных жалоб.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги