ErklÀrender Teil
Ich bin kĂŒrzlich auf einen Artikel im Code-Magazin mit dem Titel "Vergleich: Klassen vs. Funktionen" gestoĂen . Ich habe es gelesen und es kam mir ... seltsam vor. Das Magazin positioniert sich als Publikation fĂŒr ProgrammieranfĂ€nger. Aber selbst mit einem Rabatt auf Publikumsebene wirft der Artikel viele Fragen auf.
Diese Veröffentlichung ist ein Versuch, die Redaktion des Code-Magazins zu kontaktieren . Ich schreibe auf keinen Fall einen Hassbeitrag. Im Gegenteil, mein Ziel ist es, den Artikel zu zerlegen und auf die MÀngel hinzuweisen. Ich möchte weder den Autor noch die Redaktion beleidigen. Ich gebe zu, dass sich im aktuellen Artikel nichts Àndern wird, aber vielleicht werden die Redakteure etwas zur Kenntnis nehmen.
Lassen Sie mich betonen, dass ich den Artikel im gesamten Text mit den Augen eines AnfĂ€ngers betrachte . Ich habe bescheidene Erfahrung damit: Ich habe Programmierstunden gemacht, Tutorials geschrieben und Mentoring gemacht. Daher kann ich nur ein Kriterium beanstanden - wie der AnfĂ€ngerprogrammierer die Informationen lernt . Es scheint mir, dass dies mit dem Gegenstand der Veröffentlichung ĂŒbereinstimmt.
Die Redaktion riet mir, meine Gedanken in die Kommentare zu schreiben. Der Text war jedoch zu groĂ, um zu passen. Und zweitens habe ich das GefĂŒhl, dass Kommentare ignoriert werden, worĂŒber ich separat sprechen werde.
Lesen Sie zur VollstÀndigkeit des Kontexts das Original, es sollte nicht lange dauern.
Was ist los in dem Artikel
Der Zweck des Artikels besteht also darin, zwei Paradigmen zu vergleichen: den prozeduralen Stil und die OOP. Ein gutes Thema fĂŒr AnfĂ€nger. Was schief gelaufen ist?
Zwei Sprachen
Der erste Fehler ist, dass der Autor zwei Sprachen verwendet: Python und JavaScript. Was ist der Sinn davon? Im Gegenteil, der Vergleich muss im Rahmen einer Sprache erfolgen, damit der Unterschied deutlich erkennbar ist. Eine andere Sprache ist Kontextwechsel und Syntaxunterschiede. Es ist, als wĂŒrde man zwei Programme fĂŒr ein Telefon vergleichen, aber eines auf einem iPhone und das andere auf einem Android ausfĂŒhren, wobei man die Tatsache ĂŒbersieht, dass Plattformunterschiede dramatisch sein können.
, â . â - , , . , , , . , , â , JavaScrip .
, JavaScript? , :
, JS . JS : private- ; â , . Python : . JavaScript, , . , .
. " ", , . , , .
â , . :
class User:
user_count = 0
def __init__(self, name, age, adress):
self.name = name
self.age = age
self.adress = adress
user.user_count += 1
user_count . . , . user_count : . ?
, . user_count , . __init__ , self. , , .
, , .
, , â . , , . , , :
user1 = User("ivan", 20, "addr1")
user2 = User("huan", 30, "addr2")
user3 = User("juan", 40, "addr3")
print(User.user_count)
# 3
, . , , del . :
del user3
print(User.user_count)
# 3
:
def __del__(self):
User.user_count -= 1
del user3
print(User.user_count)
# 2
, . ? . ? . , .
, ? , â . len. :
users = [user1, user2, user3]
print(len(users))
# 3
users.remove(user3)
print(len(users))
# 2
, : :
//
user1 = ['', 23, ''];
//
user2 = ['', 19, ''];
. â , ( JS):
var user1 = {
name: '',
age: 23,
adress: ''
};
var user2 = {
name: '',
age: 19,
adress: ''
};
, "" , . â , .
, . :
function user1_add_bonus(bonus_count) {
user1[3] += bonus_count;
user1[4] = Math.floor(user1[3]/10000);
if (user1[4] > 3) {
user1[4] = 3;
}
console.log(' ', user1[0], ' : ', user1[4])
}
function user2_add_bonus(bonus_count) {
user2[3] += bonus_count;
user2[4] = Math.floor(user2[3]/10000);
if (user2[4] > 3) {
user2[4] = 3;
}
console.log(' ', user2[0], ' : ', user2[4])
}
, . â . . , :
function user_add_bonus(user, bonus_count) {
user.bouns_count += bonus_count;
user.bonus_level = Math.floor(user.bouns_count / 10000);
if (user.bonus_level > 3) {
user.bonus_level = 3;
}
console.log(' ', user.name, ' : ', user.bonus_level)
}
, . user1_add_bonus - , NaN- . , 3 4:
[ "", 23, "", NaN, NaN ]
, , . , â ? , . -, . ", ?"
, , , â . , . â , , .
, user1_add_bonus user2_add_bonus. . , user1 user2. :
â . , , 10.
, â . , , - . , , user.
: :
function user1_add_bonus(bonus_count) {
user1[3] += bonus_count;
user1[4] = Math.floor(user1[3]/10000);
if (user1[4] > 3) {
user1[4] = 3;
}
console.log(' ', user1[0], ' : ', user1[4])
}
function user2_add_bonus(bonus_count) {
user2[3] += bonus_count;
user2[4] = Math.floor(user2[3]/10000);
if (user2[4] > 3) {
user2[4] = 3;
}
console.log(' ', user2[0], ' : ', user2[4])
}
function user3_add_bonus(bonus_count) {
user3[3] += bonus_count;
user3[4] = Math.floor(user3[3]/10000);
if (user3[4] > 3) {
user3[4] = 3;
}
console.log(' ', user3[0], ' : ', user3[4])
}
function user4_add_bonus(bonus_count) {
user4[3] += bonus_count;
user4[4] = Math.floor(user4[3]/10000);
if (user4[4] > 3) {
user4[4] = 3;
}
console.log(' ', user4[0], ' : ', user4[4])
}
function user5_add_bonus(bonus_count) {
user5[3] += bonus_count;
user5[4] = Math.floor(user5[3]/10000);
if (user5[4] > 3) {
user5[4] = 3;
}
console.log(' ', user5[0], ' : ', user5[4])
}
//
user1 = ['',23,'',0,0];
// 15000
user1_add_bonus(15000);
//
user2 = ['',19,'',3000,0];
// 5000
user2_add_bonus(5000);
//
user3 = ['',31,'',0,1]
//
user4 = ['',45,'',5000,2];
//
user5 = ['',32,'',8000,1];
// 10000
user5_add_bonus(10000);
:
, 20%, 5 . 5, . , â . : , . , . 100 , .
, . , , ? , , . , , , .
, , . . .
. :
class User1:
def __init__(self, name, age, adress):
self.name = name
self.age = age
self.adress = adress
class User2:
def __init__(self, name, age, adress):
self.name = name
self.age = age
self.adress = adress
# ...
user1 = User1(...)
user2 = User2(...)
user3 = User3(...)
user4 = User4(...)
user5 = User5(...)
# ...
! , ? , . , â .
, . , . â - : . â " " â .
, . , .
, â , , . . , , . , â ( â ), . â .
, . - : User user. Javascript .
: - , . , . .
: Javascript , __ (. ). : . , , .
, . Clean NPC :
â .
Emil Orekhov:
. , , , , ?
:
, . . user .
:
, , : user.user_count += 1 , user â User :)
.
- , , ? , ?
- Warum ignoriert die Redaktion Kommentare? Ich verstehe, dass Sie nicht jedem gefallen werden, besonders in Bezug auf Stil und Benennung. Die Leser weisen jedoch auf offensichtliche Fehler hin. Die Kommentare sind bereits sechs Monate alt, aber am Artikel hat sich nichts geÀndert.
- Und das letzte - es scheint mir, dass das Material aus dem Artikel dem Leser eher schadet, weil es irrefĂŒhrend ist. Was denken die Redakteure darĂŒber?