В Java, почему люди предварительно ожидают поля с 'этим'?

Ошибка синтаксиса: ошибка синтаксиса, неожиданный T_VARIABLE

Возможный сценарий

Я не могу найти, где мой код поступил не так. Вот моя полная ошибка:

Ошибка анализа: ошибка синтаксиса, неожиданный T_VARIABLE в строке x

Что я пытаюсь

$sql = 'SELECT * FROM dealer WHERE id="'$id.'"';

Ответ

Ошибка анализа: проблема с синтаксисом вашей программы, например, оставляя точку с запятой от конца инструкции или, как и в случае выше, пропускает оператор ..

Простыми словами это синтаксическая ошибка, означающая, что в вашем коде есть что-то, что помешает правильному анализу и поэтому работает.

Что вам нужно сделать, так это внимательно проверить строки, где ошибка для любых простых ошибок.

Это сообщение об ошибке означает, что в строке x файла интерпретатор PHP ожидал увидеть открытую круглую скобку, но вместо этого он встретил нечто, называемое T_VARIABLE. Эта вещь T_VARIABLE называется token. Это способ интерпретации PHP-интерпретатора различных фундаментальных частей программ. Когда интерпретатор читает в программе, он переводит то, что вы написали, в список токенов. Где бы вы ни разместили переменную в своей программе, в списке интерпретатора есть токен T_VARIABLE.

Хорошо читается: Список токенов парсера

So убедитесь, что вы включили хотя бы E_PARSE в своем php.ini. Ошибки анализа не должны существовать в производственных сценариях.

Я всегда рекомендовал добавить следующий оператор при кодировании:

error_reporting(E_ALL);

Отчет об ошибках PHP

Также неплохо использовать среду IDE, которая позволит вам знать ошибки разбора при наборе текста. Вы можете использовать:

  1. NetBeans (прекрасный мир красоты, бесплатное программное обеспечение) (лучший, на мой взгляд)
  2. PhpStorm (дядя Гордон любит это: P, платный план, содержит проприетарное и бесплатное программное обеспечение)
  3. Eclipse (красота и зверь, бесплатное программное обеспечение)

Вопросы, относящиеся:

25
задан Community 23 May 2017 в 11:44
поделиться

16 ответов

По этой же причине некоторые люди предпочитают добавлять личные элементы данных к «m_» или к именам интерфейсов «IFoo». Они считают, что это повышает читабельность и ясность. Согласны ли вы с такими соглашениями или нет, это вопрос вкуса.

7
ответ дан duffymo 28 November 2019 в 17:36
поделиться

Код является чтением simplier. Другая хорошая практика, по-моему, звонит getXXX() в toString() также (вместо этого тогда this.XXX), потому что эти getXXX() может иметь важную логику.

я думаю, что используют название атрибута без этого is'nt хорошая идея для обслуживания приложения.

0
ответ дан alepuzio 28 November 2019 в 17:36
поделиться

Я пытаюсь использовать «this.whothing» при написании больших кусков кода, потому что было легче выяснить, на что ссылаются. При чтении больших кусков кода, написанного другими людьми, в определенные моменты я часто путался с тем, ссылаются ли они на переменные экземпляра или локальные переменные.

0
ответ дан Patrick Lin 28 November 2019 в 17:36
поделиться

"это" предотвращает беспорядок с переменными экземпляра с тем же именем в родительском классе/es.

Это - в значительной степени дополнение к предварительному ожиданию с "супер".

0
ответ дан jwpfox 28 November 2019 в 17:36
поделиться

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

Однако, если вы берете PHP, использование $this обычно требуется при обращении к переменным класса. При разных правилах в разных языках зачастую проще придерживаться общего для них паттерна, паттерна, который, как оказалось, очень твердый стиль кодирования. Мне легче просто присоединиться this ко всему, чем пытаться вспомнить, какой язык требует этого, а какой просто «предпочитает».

0
ответ дан Magsol 28 November 2019 в 17:36
поделиться

Они - возможно, Python программист и подверглись пыткам/потерялись/перепутались без явного это.

2
ответ дан Ali Afshar 28 November 2019 в 17:36
поделиться

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

Например, в классе «Rational»

Вместо того, чтобы делать

class Rational
{
    int denominator;
    int numerator;

    public Rational(int d, int n)
    {
        denominator = d;
        numerator = n;
    }
}

, я делаю это.

class Rational
{
    int denominator;
    int numerator;

    public Rational(int denominator, int numerator)
    {
        this.denominator = denominator;
        this.numerator = numerator;
    }
}

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

2
ответ дан Tony Peterson 28 November 2019 в 17:36
поделиться

Кроме устранения неоднозначности с параметрами метода, он ничего не покупает. Может быть, ясность / читабельность, но это действительно зависит от вашего стиля.

2
ответ дан Cogsy 28 November 2019 в 17:36
поделиться

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

Это не влияет на производительность, это не создает проблем для удобочитаемости (если вообще это делает чтение легче).

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

2
ответ дан Cyril Gupta 28 November 2019 в 17:36
поделиться

Небольшое в стороне, но может стоить отметить, что инструмент "Clean Up" в Eclipse может быть установлен автоматически добавить/удалить это. к членским доступам согласно предпочтению.

"Java / Стиль кода / Моются" в предпочтительном диалоге.

3
ответ дан Cheekysoft 28 November 2019 в 17:36
поделиться

Это поможет вам сразу определить переменные-члены.
ToString () выше слишком мал, чтобы проиллюстрировать это.
Предположим, у вас есть метод размера экрана. Вы вычисляете, присваиваете, меняете местную переменную и переменную экземпляра. this.memberVar или this.PropertyName помогает вам отслеживать, где вы изменяете состояние экземпляра с помощью назначения полей или установки свойств.

3
ответ дан Gishu 28 November 2019 в 17:36
поделиться

В мире.NET инструмент Microsoft StyleCop также имеет правило, названное "Местные вызовы Префикса С Этим":

нарушение А этого правила происходит каждый раз, когда код содержит вызов к члену экземпляра локального класса или базового класса, который не снабжается префиксом ‘this. ’. Исключение к этому правилу происходит, когда существует локальное переопределение участника базового класса, и код намеревается позвонить участнику базового класса непосредственно, обходя локальное переопределение. В этом случае вызов может быть снабжен префиксом ‘base. ’, а не ‘this. ’.

По умолчанию, StyleCop не разрешает использованию подчеркиваний или m_ отмечать поля локального класса, в пользу ‘this. Префикс ’. Преимущество использования ‘this. ’ - то, что это применяется одинаково ко всем типам элемента включая методы, свойства, и т.д., и не только поля, выполняя все вызовы для классификации участников, немедленно распознаваемых, независимо от которого редактор используется для просмотра кода. Другое преимущество состоит в том, что это создает быстрое, распознаваемое дифференцирование между членами экземпляра и статическими участниками, которые не являются быть снабженными префиксом.

преимущество финала А использования ‘this. Префикс ’ является тем вводом этого. заставит Visual Studio показывать всплывающее окно IntelliSense, делая его быстрым и легким для разработчика выбрать участника класса для вызова.

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

6
ответ дан huseyint 28 November 2019 в 17:36
поделиться

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

10
ответ дан jwanagel 28 November 2019 в 17:36
поделиться

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

11
ответ дан Joseph Daigle 28 November 2019 в 17:36
поделиться

Иногда необходимо устранить неоднозначность:

public void setFoo(Bar foo) {
    this.foo = foo;
}

В других случаях это просто стилистическая вещь. В целом, я стараюсь по возможности избегать this.blah, поскольку это более многословно. Если вам интересно, результирующий байт-код точно такой же.

37
ответ дан Daniel Spiewak 28 November 2019 в 17:36
поделиться
  1. Безопасное программирование (в случае, если кто-то редактирующий код позже добавляет параметр или локальный с конфликтующим именем
  2. , Делают код "сам документирование", более очевидный
56
ответ дан Doug Currie 28 November 2019 в 17:36
поделиться
Другие вопросы по тегам:

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