Имена Променљивих -...

31
Имена Променљивих (њихове скривене моћи) Бранко Поповић

Transcript of Имена Променљивих -...

Page 1: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

Имена Променљивих (њихове скривене моћи)

Бранко Поповић

Page 2: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

2

Именовање?

Зашто је важно? Именујемо променљиве Именујемо функције Именујемо пројекат Именујемо, именујемо, именујемо

Page 3: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

3

Лоше именовање

Page 4: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

4

Добро именовање

Page 5: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

5

Основно правило!

Пун и прецизан опис Фраза као назив Пример:

Број седишта на стадиону:

var brojSedistaNaStadionu = …

Page 6: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

6

Пример

Page 7: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

7

Дужина назива

Page 8: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

8

Опсег и променљиве

Краћа имена прихватљива for (int i = 0; i < ….) …. Краће име – мали опсег трајања

Page 9: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

9

Супротне променљиве

Page 10: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

Именa променљивих на основу улоге

Page 11: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

11

Индекси у петљи

Избегавање забуне шта је i a шта је j

Page 12: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

12

Статусне променљиве

flag није добро име Који је смисао статусне променљиве? Лоше име може доста да збуни

Page 13: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

13

Статусне променљиве

ЛОШЕ! ДОБРО!

Page 14: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

14

Привремене променљиве

Показују (не)разумевање кода Третирају се опуштеније него остале Више подложне грешкама

Page 15: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

15

Привремене променљиве

ЛОШЕ!

ДОБРО!

Page 16: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

16

Булеанске променљиве

done error found success

добра име имплицирају: TRUE / FALSE

Page 17: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

Конвенције именовања

Page 18: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

18

Конвенције?

Конвеније убијају креативност и ефикасност ?

Ефективни стандарди мођан алат

Page 19: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

19

Конвенције?

Допуштају да се неке ствари прихватају здраво за готово

Лакше разумевање туђег кода

Спречавају исти назив за различите ствари

Наговештавају везу између одређених делова кода

Page 20: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

20

Конвенције када користити?

Више програмера на пројекту

Препуштање софтвера другим људима на одржавање

Када код пролази ревизију других људи

Сувише велики пројекат да би се све памтило

Термини специфични за пројекат

Page 21: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

21

Типови конвенција

Неформални Често се користе – не зависе од језика

Формални

Засновани на конкретном језику

Page 22: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

22

Пример

Page 23: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

Префикси

Page 24: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

24

Префикси

Кориснички дефинисани типови (UDT) - скраћенице Односе се на тип објекта или променљиве коју именујемо Користе се кратки кодови Не односе се на стандардне типове програмског језика

Page 25: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

25

Префикси

Page 26: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

26

Префикси

Семантички префикси Стандардни кроз пројекте Ближе одређују сврху

Page 27: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

27

Префикси

Page 28: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

28

Префикси - предности

Дају прецизност именима Чине имена компактнијим Мана: запостављање смисленог имена уз префикс

Префикс све решава?

Page 29: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

29

Имена за избегавање

Збуњујући називи Имена са сличним значењем (input – inputValue) Слично име а различито значење Имена која слично звуче (wrap – rap)

Нумеричка имена (file1, record2, …)

Погрешно спеловање

Више стварних језика

Page 30: Имена Променљивих - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vladaf/Courses/Matf RS2... · 5 Основно правило! Пун и прецизан опис

Литература

Clean Code Robert C. Martin