Разве там какие-либо причины не состоят в том, чтобы использовать “это” (“Сам”, “Меня”, …)?

1) и 2) Turbo-C использовал версию стандарта C90. Он не допускал объявления переменных в середине тела { }, но только в верхней части. Поэтому char* ch необходимо переместить:

int main (void)
{
  char* ch = NULL
  ...

3) Вы пытаетесь умножить указатель (char *) 209. Это просто не разрешено в C и не будет компилироваться и на современных компиляторах.

И, наконец, арифметика указателей ch++, используемая для указателя, который не указывает на выделенный объект, не является четко определенной ни в одной версии C. Она , вероятно, работала в Turbo C, но без гарантий.

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

Использование char для доступа к необработанной памяти является плохой идеей, так как это тип с определенной подписью реализации. Вместо этого используйте unsigned char или uint8_t.

10
задан Community 23 May 2017 в 12:23
поделиться

15 ответов

Предупреждение: Чисто субъективный ответ ниже.

Я думаю, что лучшей "причиной" того, что не использовался this/self/me является краткость. Если это уже - членская переменная/функция затем, почему избыточно добавляют префикс?

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

9
ответ дан 3 December 2019 в 14:26
поделиться

Мало того, что я часто использую "это". Я иногда использую "это".

class Foo
{
    private string bar;

    public int Compare(Foo that)
    {
        if(this.bar == that.bar)
        {
            ...

И так далее. "Это" в моем коде обычно означает другой экземпляр того же класса.

0
ответ дан 3 December 2019 в 14:26
поделиться

В конце это всегда - вопрос личного выбора. Лично, я использую эту конвенцию кодирования:

public class Foo
{
  public string Bar
  {
    get
    {
      return this.bar;
    }
    /*set
    {
      this.bar = value;
    }*/
  }
  private readonly string bar;

  public Foo(string bar)
  {
    this.bar = bar;
  }
}

Таким образом для меня "это" на самом деле необходимо для хранения конструктора читаемым.

Править: тот же самый пример был отправлен "sinje", в то время как я писал код выше.

0
ответ дан 3 December 2019 в 14:26
поделиться

В типичном методе установщика (взятый из ответа lagerdalek):

string name;

public void SetName(string name)
{
     this.name = name;
}

Если бы Вы не использовали его, то компилятор не знал бы, что Вы обращались к членской переменной.
Использование this. должен сказать компилятору, что необходимо получить доступ к членской переменной - который является вне непосредственного объема метода. При создании переменной в рамках метода, который является тем же именем, поскольку членская переменная совершенно законна, точно так же, как переопределение метода в классе, который расширился, другой класс совершенно законен.
Однако, если все еще необходимо использовать метод суперкласса, Вы используете super. По-моему, использование этого. не хуже, чем использование супер. и позволяет программисту больше гибкости в их коде.

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

0
ответ дан 3 December 2019 в 14:26
поделиться

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

Class Test
    Private IntVar AS Integer
    Public Function New(intVar As Integer)
       Me.Intvar = intvar
    End Function    
End Class

Не все время, но главным образом Меня / это / сам довольно полезно. Разъясняет объем, что Вы говорите.

0
ответ дан 3 December 2019 в 14:26
поделиться

что касается меня я использую this назвать методы инстанцированного объекта тогда как self для статического метода

0
ответ дан 3 December 2019 в 14:26
поделиться

'это'. в коде всегда намекает мне, что кодер использовал intellisense (или другие эквиваленты IDE), чтобы сделать их тяжелый подъем.

Я, конечно, виновен в этом, однако я, по просто причинам тщеславия, действительно удаляю их впоследствии.

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

Квалификация переменной

string name; //should use something like _name or m_name

public void SetName(string name)
{
     this.name = name;
}
1
ответ дан 3 December 2019 в 14:26
поделиться

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

1
ответ дан 3 December 2019 в 14:26
поделиться

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

2
ответ дан 3 December 2019 в 14:26
поделиться

Я лично нахожу это this.whatever менее читаемо. Вы не можете заметить различие в методе с 2 строками, но ожидать, пока Вы не добираетесь this.variable и this.othervariable везде в классе.

Кроме того, я думаю то использование this. был найден как замена для части очень ненавистной Венгерской записи. Некоторые люди там узнали, что это еще более ясно для читателя видеть, что переменная является участником класса, и this. добился цели. Но почему дурак самостоятельно и не использование простое "m_" или просто "_" для этого, если нам нужна дополнительная ясность? Это - 5 символов по сравнению с 2 (или даже 1). Меньше ввода, тот же результат.

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

2
ответ дан 3 December 2019 в 14:26
поделиться

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

Для некоторых языков, как PHP, это даже обязательно к префиксу с $this->, если необходимо использовать поля класса или методы.

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

2
ответ дан 3 December 2019 в 14:26
поделиться

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

3
ответ дан 3 December 2019 в 14:26
поделиться

Это разъясняется в некоторых случаях, как этот пример в c#:

public class SomeClass
{
    private string stringvar = "";

    public SomeClass(string stringvar)
    {
        this.stringvar = stringvar;
    }
}
5
ответ дан 3 December 2019 в 14:26
поделиться

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

this.Foo();

где Foo() объявляется внешне как:

public static void Foo(this SomeType obj) {...}
8
ответ дан 3 December 2019 в 14:26
поделиться

Это спросили прежде действительно в "переменной в Java" контекст:

Действительно ли Вы снабжаете префиксом свою переменную экземпляра 'это' в Java?

Основная текущая причина, кажется:

"это увеличивает визуальный шум, необходимо отсеять до находки значение кода".

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

1
ответ дан 3 December 2019 в 14:26
поделиться
Другие вопросы по тегам:

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