🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #231922

Nikomu niepotrzebne zmienne prywatne?

#231922
From: Marek S
Date: Thu, 25 Jan 2018 19:19
61 lines
2698 bytes
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
Technical Details
Message-ID: <p4dakb$a6j$1@node2.news.atman.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: Marek S <precz@spamowi.com>
Newsgroups: pl.comp.lang.php
Subject: Nikomu niepotrzebne zmienne prywatne?
Date: Thu, 25 Jan 2018 20:19:34 +0100
Organization: ATMAN - ATM S.A.
Lines: 61
Message-ID: <p4dakb$a6j$1@node2.news.atman.pl>
NNTP-Posting-Host: 89-69-207-111.dynamic.chello.pl
Mime-Version: 1.0
X-Trace: node2.news.atman.pl 1516907979 10451 89.69.207.111 (25 Jan 2018 19:19:39 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Thu, 25 Jan 2018 19:19:39 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2
X-Mozilla-News-Host: news://news.atman.pl:119
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit