Біркелкі қолжетімділік принципі: Бағдарламалық жасақтамадағы өзгерістерді азайту жолы
Uniform access principle
Біркелкі қол жеткізу қағидасы – бағдарламалауда модуль қызметтеріне бірдей синтаксиспен қол жеткізуді ұсынады. Есептеу немесе сақтау айырмасы болмайды.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Компьютерлік бағдарламалау принципі
Computer programming principle
Компьютерлік бағдарламалаудың бірыңғай қолжетімділік принципі алғаш рет Бертран Мейердің "Объектіге бағытталған бағдарламалық жасақтама құрастыру" кітабында ұсынылған. Онда былай делінген: "Модуль ұсынатын барлық қызметтер бірыңғай жазу арқылы қолжетімді болуы керек, олар сақтау арқылы немесе есептеу арқылы іске асырылғандығын көрсетпеуі тиіс". Бұл принцип, көбінесе объектіге бағытталған бағдарламалау тілдерінің синтаксисіне қатысты қолданылады. Тұжырымдаманы қарапайым түрінде айтқанда, объектінің атрибутымен, алдын ала есептелген қасиетімен немесе әдісімен/сұрауымен жұмыс істеу арасында ешқандай синтаксистік айырмашылық болмауы керек. Көптеген мысалдар принциптің "оқу" жағына (яғни мәнді алуға) назар аударса, Мейер принциптің "жазу" (яғни мәнді өзгерту) салдарымен күресудің қиындығын Эйфель бағдарламалау тілінің ресми веб-сайтындағы ай сайынғы бағанында көрсетіп береді.
The uniform access principle of computer programming was put forth by Bertrand Meyer (originally in his book Object Oriented Software Construction). It states "All services offered by a module should be available through a uniform notation, which does not betray whether they are implemented through storage or through computation." This principle applies generally to the syntax of object oriented programming languages. In simpler form, it states that there should be no syntactical difference between working with an attribute, pre computed property, or method/query of an object. While most examples focus on the "read" aspect of the principle (i. e., retrieving a value), Meyer shows that the "write" implications (i. e., modifying a value) of the principle are harder to deal with in his monthly column on the Eiffel programming language official website.
Түсіндірме
Мейер қарастырған мәселе үлкен бағдарламалық жобаларды немесе бағдарламалық кітапханаларды қолдауды қамтиды. Бағдарламалық жасақтаманы әзірлеу немесе күтіп-ұстау кезінде, көп код жазылғаннан кейін, сыныпты немесе объектіні өзгерту қажет болуы мүмкін, бұл жай ғана атрибутқа қатынауды әдіс шақыруына айналдырады. Бағдарламалау тілдері көбінесе атрибуттарға қол жеткізу және әдісті шақыру үшін әртүрлі синтаксис қолданады (мысалы, . және ). Синтаксистік өзгеріс сол кездегі танымал бағдарламалау тілдерінде атрибут қолданылған барлық жерде бастапқы кодты өзгертуді қажет етеді. Бұл бастапқы кодты өте үлкен көлемдегі, көптеген әртүрлі орындарда өзгертуді талап етуі мүмкін. Жағдай одан да нашар болады, егер өзгеріс жүздеген клиенттер пайдаланатын нысандар кітапханасында жасалса, онда әрбір клиент өз кодын қарап, атрибут қолданылған барлық жерді тауып, өзгертіп, бағдарламаларын қайта құрастыруға мәжбүр болады. Кері жағдайда (әдістен қарапайым атрибутқа) проблема тумайды, себебі функцияны сақтап, одан атрибут мәнін қайтаруға болады. Мейер бағдарламашылардың кодты жазу қажеттілігін түсінді, осылайша объект атрибутын әдіс шақыруына немесе керісінше түрлендіретін өзгерістерден туындайтын каскадтық өзгерістерді азайтуға немесе жоюға болады. Ол осы мақсатта Бірыңғай қолжетімділік қағидасын (Uniform Access Principle) әзірледі. Көптеген бағдарламалау тілдері UAP-ті қатаң түрде қолдамаса да, оның кейбір формаларын қолдайды. Бірқатар бағдарламалау тілдерінде ұсынылған қасиеттер (Properties) Мейердің UAP-мен шешкен мәселені басқа тәсілмен шешеді. Бірде-бір бірыңғай белгілеудің орнына, қасиеттер атрибутқа қатынау үшін қолданылатын белгілеуді пайдалана отырып, объектінің әдісін шақыруға мүмкіндік береді. Әдіс шақыру синтаксисі бұрынғысынша қолжетімді.
The problem being addressed by Meyer involves the maintenance of large software projects or software libraries. Sometimes when developing or maintaining software it is necessary, after much code is in place, to change a class or object in a way that transforms what was simply an attribute access into a method call. Programming languages often use different syntax for attribute access and invoking a method, (e. g., versus ). The syntax change would require, in popular programming languages of the day, changing the source code in all the places where the attribute was used. This might require changing source code in many different locations throughout a very large volume of source code. Or worse, if the change is in an object library used by hundreds of customers, each of those customers would have to find and change all the places the attribute was used in their own code and recompile their programs. Going the reverse way (from method to simple attribute) really was not a problem, as one can always just keep the function and have it simply return the attribute value. Meyer recognized the need for software developers to write code in such a way as to minimize or eliminate cascading changes in code that result from changes which convert an object attribute to a method call or vice versa. For this he developed the Uniform Access Principle. Many programming languages do not strictly support the UAP but do support forms of it. Properties, which are provided in a number of programming languages, address the problem Meyer was addressing with his UAP in a different way. Instead of providing a single uniform notation, properties provide a way to invoke a method of an object while using the same notation as is used for attribute access. The separate method invocation syntax is still available.
C++ тілінде
C++-да UAP та, қасиеттер де жоқ. Объект өзгерген кезде атрибут (мысалы, түс) екі функцияға айналады. Осы объектінің инстанциясын пайдаланатын және атрибут мәнін орнататын немесе алатын кез келген жерде, осы функциялардың бірін шақыру үшін өзгеріс енгізілуі керек. (немесе). Үлгілерді (templates) және операторларды жүктеу арқылы қасиеттерді имитациялауға болады, бірақ бұл қасиеттерді тікелей қолдайтын тілдерге қарағанда қиынрақ. Бұл C++ бағдарламаларын күтуді уақыттырақ етеді. C++ объектілерінің бөлінген кітапханалары мүшелік деректерге қол жеткізуді қамтамасыз етуде сақтық танытуы керек.
C++ has neither the UAP nor properties, when an object is changed such that an attribute (color) becomes a pair of functions Any place in that uses an instance of the object and either sets or gets the attribute value ( or ) must be changed to invoke one of the functions. ( or ). Using templates and operator overloading, it is possible to fake properties, but this is more complex than in languages which directly support properties. This complicates maintenance of C++ programs. Distributed libraries of C++ objects must be careful about how they provide access to member data.
JavaScript-ті қолдану
JavaScript 2009 жылдан бері есептелген қасиеттерді қолдайды.
JavaScript has had support for computed properties since 2009.