nm_work: (Default)
[personal profile] nm_work
Читаю исходные коды, написаные другими программистами, и понимаю, что в образовательных целях и для привития хорошего стиля в программировании надо просто заставлять людей какое-то время писать на функциональных языках.

Иначе они даже в OO модели пишут классический спагетти код - с сайд эффектами, с использованием переменных класса в качестве глобальных переменных и т.д.

классический пример (на php)

$data = $this->validate($data);
if (isset($this->validation_results)) { ... }

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

list($data, $validation_results) = $this->validate($data);
if ($validation_results) { ... }

Я лично считаю, что это идет
  • во-первых от того, что пишущий никогда не задается вопросом - а как я могу красиво вернуть сразу _несколько_ результатов из функции - это тяжелое наследие языка типа Pascal/C, где для этого пришлось бы создавать отдельную структуру
  •  

  • во-вторых, из-за недостатка кругозора в других языках программирования. Даже в том-же самом Python (который уже стал мейнстримом) упаковка/распаковка данных из tuple является очень синтаксически естественной операцией и читая чужой код, учащийся языку воспринял бы эту конструкцию и начал ее использовать. В php это не так принято - и поэтому на нее и не обращают внимание. Написание двух лишних слов array/list в php я не считаю препятствием - просто небольшое неудобство.

В этом плане мне очень нравится подход perl, который даже ссылку на экземпляр объекта передает в качестве аргументов функции - поэтому, когда начинаешь менять что-то в экземпляре объекта - сразу видишь, что в этот момент создаешь side effect :)

Резюме: учите другие языки программирования, хотя бы для расширения кругозора ;)
From:
Anonymous( )Anonymous This account has disabled anonymous posting.
OpenID( )OpenID You can comment on this post while signed in with an account from many other sites, once you have confirmed your email address. Sign in using OpenID.
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.

April 2013

S M T W T F S
 123456
7891011 1213
14151617181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 23rd, 2017 09:17 am
Powered by Dreamwidth Studios