Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.lang.php > #15668

Nikomu niepotrzebne zmienne prywatne?

From Marek S <precz@spamowi.com>
Newsgroups pl.comp.lang.php
Subject Nikomu niepotrzebne zmienne prywatne?
Date 2018-01-25 20:19 +0100
Organization ATMAN - ATM S.A.
Message-ID <p4dakb$a6j$1@node2.news.atman.pl> (permalink)

Show all headers | View raw


Witam.

Mój wątek dotyczy JS ale można go uogólnić. Otóż kiedyś programowałem 
aplikacje w C++ i nie tylko w tym języku. Zmienne prywatne występowały w 
kodach jak tlen w powietrzu. Sporo obecnie programuję w PHP i JS. Przy 
okazji edycji ECMA6 tego ostatniego języka zdumiały mnie dwie rzeczy:

1. Wprowadzono wreszcie pojęcie klas i dziedziczenia ale... zignorowano 
zmienne prywatne. Nie ma czegoś takiego w samych założeniach.

2. Gdy na międzynarodowym forum zapytałem o potrzebę symulacji zmiennych 
prywatnych, wywołałem konsternację. Uzyskiwałem odpowiedzi w stylu 
przecież tak ma być, co tu kombinować! Argumentacja moja w postaci 
takiej iż jeśli wszystkie zmienne będą publiczne w dziedziczonych 
klasach i nadpiszą się niechcący (bo autor klasy B może nie wiedzieć 
jakich nazw nie powinien używać aby nie nadpisać przypadkiem tych z 
klasy bazowej A - gdy obie są rozwijane więc nowe zmienne będą się 
pojawiać), uzyskałem odpowiedź iż: no jak to możliwe, przecież w 
dokumentacji poszczególnych klas trzeba pisać jakich nazw nie używać.


Zilustruję problem za pomocą JS:

"use strict";

class aClass {
     readFromA() {
         console.log(this.a);
     }


     constructor() {
         this.a = 5;
     }
}

class bClass extends aClass {
     readFromB() {
         console.log(this.a);
     }


     constructor() {
         super();
         this.a=10;
     }
}

let bc=new bClass();
bc.readFromA(); //pokaże 10
bc.readFromB(); //pokaże 10

Wynik nie zaskakuje a ja głupi uparłem się by obie klasy mogły mieć 
swoją prywatną zmienną "a". Osiągnąłem to w końcu korzystając z faktu, 
że w JS to co jest po extends może być ... wyrażeniem (!!!).

Czy też sądzicie, że zmienne prywatne to przeżytek?

-- 
Pozdrawiam,
Marek

Back to pl.comp.lang.php | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

Nikomu niepotrzebne zmienne prywatne? Marek S <precz@spamowi.com> - 2018-01-25 20:19 +0100
  Re: Nikomu niepotrzebne zmienne prywatne? Roman Tyczka <noemail@because.no> - 2018-01-25 21:29 +0100
    Re: Nikomu niepotrzebne zmienne prywatne? Marek S <precz@spamowi.com> - 2018-01-26 00:07 +0100
      Re: Nikomu niepotrzebne zmienne prywatne? Roman Tyczka <noemail@because.no> - 2018-01-26 23:22 +0100
        Re: Nikomu niepotrzebne zmienne prywatne? Marek S <precz@spamowi.com> - 2018-01-27 13:24 +0100
  Re: Nikomu niepotrzebne zmienne prywatne? Borys Pogoreło <borys@pl.edu.leszno> - 2018-01-27 22:59 +0100
    Re: Nikomu niepotrzebne zmienne prywatne? Marek S <precz@spamowi.com> - 2018-01-28 15:07 +0100
      Re: Nikomu niepotrzebne zmienne prywatne? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-01-28 16:14 +0100
        Re: Nikomu niepotrzebne zmienne prywatne? Marek S <precz@spamowi.com> - 2018-01-28 20:35 +0100
          Re: Nikomu niepotrzebne zmienne prywatne? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-01-28 22:01 +0100
            Re: Nikomu niepotrzebne zmienne prywatne? Marek S <precz@spamowi.com> - 2018-01-29 19:01 +0100
              Re: Nikomu niepotrzebne zmienne prywatne? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-01-29 20:12 +0100
              Re: Nikomu niepotrzebne zmienne prywatne? Borys Pogoreło <borys@pl.edu.leszno> - 2018-01-30 20:36 +0100
                Re: Nikomu niepotrzebne zmienne prywatne? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-02-01 22:15 +0100

csiph-web