Yorum (bilgisayar programlama) - Comment (computer programming)

Bir gösterimi Java ile kaynak kodu prolog açıklamalarda gösterilmiş kırmızı ve satır içi yorumlarla yeşil . Program kodu içindedir mavi .

Gelen bilgisayar programlama , bir açıklama , bir programcı tarafından okunabilen bir açıklama veya ek açıklama içinde kaynak kodu a bilgisayar programı . Kaynak kodunu insanların anlamasını kolaylaştırmak amacıyla eklenirler ve genellikle derleyiciler ve yorumlayıcılar tarafından göz ardı edilirler . Yorumların sözdizimi çeşitli programlama dillerinde önemli ölçüde değişir.

Yorumlar bazen de kaynak kodunun kendisine harici belgeleri oluşturmak için çeşitli şekillerde işlenir dokümantasyon jeneratörler veya entegrasyon için kullanılan kaynak kod yönetim sistemleri ve dış diğer türlü programlama araçları .

Yorumlar tarafından sağlanan esneklik, geniş bir değişkenlik derecesine izin verir, ancak kullanımlarına yönelik resmi kurallar, genellikle programlama stili kılavuzlarının bir parçasıdır.

genel bakış

Yorumlar genellikle blok yorumlar (ayrıca giriş yorumları veya akış yorumları olarak da adlandırılır ) veya satır yorumları ( satır içi yorumlar olarak da adlandırılır ) olarak biçimlendirilir .

Blok yorumları , birden çok satıra veya tek bir satırın bir kısmına yayılabilen bir kaynak kodu bölgesini sınırlar . Bu bölge, bir başlangıç sınırlayıcısı ve bir bitiş sınırlayıcısı ile belirtilir. Bazı programlama dilleri ( MATLAB gibi ) blok yorumlarının birbirinin içine tekrar tekrar yerleştirilmesine izin verir, ancak diğerleri ( Java gibi ) buna izin vermez.

Satır yorumları ya bir yorum sınırlayıcı ile başlar ve satırın sonuna kadar devam eder veya bazı durumlarda kaynak kodunda belirli bir sütunda (karakter satırı ofseti) başlar ve satırın sonuna kadar devam eder.

Bazı programlama dilleri, farklı yorum sınırlayıcılarıyla hem blok hem de satır yorumlarını kullanır. Örneğin, C++ ile sınırlandırılmış blok yorumları vardır /*ve */bu, ile sınırlandırılmış birden çok satıra ve satır yorumuna yayılabilir //. Diğer diller yalnızca bir tür yorumu destekler. Örneğin, Ada yorumları satır yorumlarıdır: ile başlar --ve satırın sonuna kadar devam eder.

kullanır

Yorumlardan en iyi şekilde nasıl yararlanılacağı tartışmalıdır; farklı yorumcular çeşitli ve bazen karşıt bakış açıları sunmuşlardır. Yorum yazmanın birçok farklı yolu vardır ve birçok yorumcu birbiriyle çelişen tavsiyelerde bulunur.

Planlama ve gözden geçirme

Yorumlar , gerçek kodu yazmadan önce niyeti ana hatlarıyla belirtmek için bir sözde kod biçimi olarak kullanılabilir . Bu durumda, kodun kendisinden ziyade kodun arkasındaki mantığı açıklamalıdır. .

/* loop backwards through all elements returned by the server 
(they should be processed chronologically)*/
for (i = (numElementsReturned - 1); i >= 0; i--) {
    /* process each element's data */
    updatePattern(i, returnedElements[i]);
}

Bu tür bir yorum bırakılırsa, kodun amaçlanan sonuçlarla doğrudan karşılaştırılmasına izin vererek inceleme sürecini basitleştirir. Yaygın bir mantıksal yanılgı, anlaşılması kolay kodun yapması gerekeni yapmasıdır .

Kod açıklaması

Yorumlar, kodu özetlemek veya programcının amacını açıklamak için kullanılabilir. Bu düşünce ekolüne göre, kodu sade bir İngilizce ile yeniden yazmak gereksiz kabul edilir; kodu yeniden açıklama ihtiyacı, kodun çok karmaşık olduğunun ve yeniden yazılması gerektiğinin veya adlandırmanın kötü olduğunun bir işareti olabilir.

"Kötü kodu belgelemeyin - yeniden yazın."
"İyi yorumlar kodu tekrarlamaz veya açıklamaz. Amacını netleştirirler. Yorumlar, koddan daha yüksek bir soyutlama düzeyinde, ne yapmaya çalıştığınızı açıklamalıdır."

Yorumlar, bir kod bloğunun neden kurallara veya en iyi uygulamalara uymadığını açıklamak için de kullanılabilir. Bu, özellikle çok az geliştirme süresi gerektiren veya hata düzeltme gerektiren projeler için geçerlidir. Örneğin:

' Second variable dim because of server errors produced when reuse form data. No
' documentation available on server behavior issue, so just coding around it.
vtx = server.mappath("local settings")

Algoritmik açıklama

Bazen kaynak kodu, belirli bir soruna yeni veya dikkate değer bir çözüm içerir. Bu gibi durumlarda, yorumlar metodolojinin bir açıklamasını içerebilir. Bu tür açıklamalar, diyagramları ve resmi matematiksel kanıtları içerebilir. Bu, kodun amacının açıklanmasından ziyade, kodun açıklamasını teşkil edebilir; ancak kod tabanını korumakla görevli diğerleri böyle bir açıklamayı çok önemli bulabilir. Bu, özellikle son derece uzmanlaşmış sorun alanları söz konusu olduğunda doğru olabilir; veya nadiren kullanılan optimizasyonlar, yapılar veya işlev çağrıları.

Örneğin, bir programcı hızlı sıralama yerine neden eklemeli sıralamanın seçildiğini açıklamak için bir yorum ekleyebilir , çünkü ilki teoride ikincisinden daha yavaştır. Bu aşağıdaki gibi yazılabilir:

 list = [f (b), f (b), f (c), f (d), f (a), ...];
 // Need a stable sort. Besides, the performance really does not matter.
 insertion_sort (list);

Kaynak dahil etme

ASCII sanat yapılarından oluşan logolar , diyagramlar ve akış şemaları, yorum olarak biçimlendirilmiş kaynak koduna eklenebilir. Ayrıca, telif hakkı bildirimleri kaynak koduna yorum olarak yerleştirilebilir. İkili veriler, ikili metinden metne kodlama olarak bilinen bir işlem aracılığıyla yorumlarda kodlanabilir , ancak bu tür bir uygulama yaygın değildir ve tipik olarak harici kaynak dosyalarına havale edilir.

Aşağıdaki kod parçası, Windows Komut Dosyası Ana Bilgisayarı altında çalışan bir Windows Komut Dosyası'nda bulunan bir sistem yönetimi komut dosyası için işlem akışını gösteren basit bir ASCII diyagramıdır . Kodu işaretleyen bir bölüm yorum olarak görünse de, diyagramın kendisi aslında teknik olarak yorumlardan farklı olduğu düşünülen ancak benzer amaçlara hizmet edebilen bir XML CDATA bölümünde görünür .

<!-- begin: wsf_resource_nodes -->
<resource id="ProcessDiagram000">
<![CDATA[
 HostApp (Main_process)
    |
    V
script.wsf (app_cmd) --> ClientApp (async_run, batch_process)
                |
                |
                V
         mru.ini (mru_history)  
]]>
</resource>

Bu özdeş diyagram kolayca bir yorum olarak dahil edilebilmesine rağmen, örnek, bir programcının kaynakları kaynak koduna dahil etmenin bir yolu olarak yorumları kullanmamayı seçebileceği bir örneği göstermektedir.

meta veri

Bir bilgisayar programındaki yorumlar genellikle bir program dosyasıyla ilgili meta verileri depolar.

Özellikle, birçok yazılım geliştiricisi, o programın kaynak kodunu okuyan kişilerin, yaptıkları iyileştirmeleri bakıcıya geri göndermelerine yardımcı olmak için yorumlara gönderme yönergeleri koyar.

Diğer meta veriler şunları içerir: program dosyasının orijinal sürümünü oluşturan kişinin adı ve ilk sürümün oluşturulduğu tarih, programın mevcut yöneticisinin adı, program dosyasını şu ana kadar düzenleyen diğer kişilerin adları , programın nasıl kullanılacağına ilişkin belgelerin URL'si, bu program dosyası için yazılım lisansının adı vb.

Programın bazı bölümlerindeki bir algoritma, bir kitaptaki veya başka bir referanstaki bir açıklamaya dayandığında, kitabın sayfa numarasını ve başlığını veya Yorum Talebi veya başka bir referansı vermek için yorumlar kullanılabilir .

hata ayıklama

Yaygın bir geliştirici uygulamadır? Açýklama nihai programında yürütülmez böylece, bir yorum olmaya kod bu bloğu neden açıklama sözdizimi eklemek için anlamı, bir kod parçası. Bu, belirli kod parçalarını son programdan çıkarmak için yapılabilir veya (daha yaygın olarak) bir hatanın kaynağını bulmak için kullanılabilir. Programın bölümlerini sistematik olarak yorumlayarak ve çalıştırarak, bir hatanın kaynağı belirlenebilir ve düzeltilmesine izin verilir.

Hariç tutma amacıyla kodun yorumlanmasına bir örnek aşağıdadır:

Yukarıdaki kod parçası, programcının bir nedenden dolayı hata ayıklama seçeneğini devre dışı bırakmayı seçtiğini gösteriyor.

Birçok IDE, tek menü seçenekleri veya tuş kombinasyonları ile bu tür yorumların hızlı bir şekilde eklenmesine veya kaldırılmasına izin verir. Programcının sadece metnin yorumunu (çözmek) istediği kısmı işaretlemesi ve uygun seçeneği seçmesi gerekir.

Otomatik dokümantasyon oluşturma

Programlama araçları bazen belgeleri ve meta verileri yorumlarda saklar . Bunlar, otomatik başlık dosyası ekleme için ekleme konumlarını, dosyanın sözdizimi vurgulama modunu ayarlama komutlarını veya dosyanın revizyon numarasını içerebilir . Bu işlevsel kontrol yorumlarına genel olarak ek açıklamalar da denir . Belgeleri kaynak kodu yorumları içinde tutmak, belgeleme sürecini basitleştirmenin ve ayrıca belgelerin koddaki değişikliklerle güncel tutulma şansını artırmanın bir yolu olarak kabul edilir.

Dokümantasyon jeneratörleri örnekleri programları dahil Javadoc ile kullanım için Java , ddoc için D , Doxygen için C , C ++ , Java, IDL , Görsel Uzman için PL / SQL , Transact-SQL , PowerBuilder ve phpdoc için PHP . Doküman dizisi biçimleri Python , Lisp , Elixir ve Clojure tarafından desteklenir .

C# , F# ve Visual Basic .NET , derlenmiş .NET derlemesinden IntelliSense tarafından okunan "XML Yorumları" adlı benzer bir özelliği uygular .

Sözdizimi uzantısı

Bazen, başlangıçta yorum olması amaçlanan sözdizimi öğeleri, bir programa " koşullu yorumlar " gibi ek bilgiler iletmek için yeniden amaçlanır . Bu tür "sıcak yorumlar", geriye dönük uyumluluğu koruyan tek pratik çözüm olabilir, ancak yaygın olarak bir çamur olarak kabul edilir .

Direktif kullanımları

Bir editör veya tercüman için özel bir yönerge oluşturmak için normal yorum karakterlerinin birlikte seçildiği durumlar vardır .

Bir tercümanı yönlendirmenin iki örneği:

  • Unix " shebang " – #!– bir betiğin ilk satırında kullanılacak yorumlayıcıya işaret etmek için kullanılır.
  • Bir kaynak dosyanın kullandığı kodlamayı tanımlayan "sihirli yorumlar", örneğin Python'un PEP 263'ü.

Unix benzeri bir sistem için aşağıdaki komut dosyası, bu kullanımların her ikisini de gösterir:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
print("Testing")

Bir derleyiciye, bir case ifadesinde varsayılan bir "sonradan geçiş" in kasıtlı olarak yapıldığını bildirmek için C'deki yorumların kullanılması biraz benzerdir :

switch (command) {
    case CMD_SHOW_HELP_AND_EXIT:
      do_show_help();
      /* Fall thru */
    case CMD_EXIT:
      do_exit();
      break;
    case CMD_OTHER:
      do_other();
      break;
    /* ... etc. ... */
  }

/* Fall thru */İnsan okuyucular için böyle bir yorum eklemek zaten yaygın bir kuraldı, ancak 2017'de gcc derleyicisi bunları (veya kasıtlı niyetin diğer belirtilerini) aramaya başladı ve bulunamazsa: "uyarı: bu ifade düşebilir" .

Birçok editör ve IDE , özel olarak biçimlendirilmiş yorumları okuyacaktır. Örneğin, Vim'in "modeline" özelliği ; bu, dosyanın üst kısmına yakın bir yerde bulunan bu yorumla bir kaynağı düzenlerken sekmelerin işlenmesini değiştirir:

# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4

stres giderme

Bazen programcılar, geliştirme araçları, rakipler, işverenler, çalışma koşulları veya kodun kalitesi hakkında yorum yaparak stresi azaltmanın bir yolu olarak yorumlar ekler. Bu olgunun oluşumu, kaynak kodundaki küfürleri izleyen çevrimiçi kaynaklardan kolayca görülebilir .

normatif görüşler

Kaynak kodunda yorumların doğru kullanımı ile ilgili çeşitli normatif görüşler ve uzun süredir devam eden görüşler vardır. Bunlardan bazıları gayri resmidir ve kişisel tercihlere dayalıdır, diğerleri ise belirli bir topluluk için resmi kılavuzlar olarak yayınlanır veya ilan edilir.

yorum ihtiyacı

Uzmanlar, kaynak kodunda yorumların uygun olup olmadığı ve ne zaman uygun olduğu konusunda farklı görüşlere sahiptir. Bazıları, kaynak kodun kendi kendini açıklayıcı veya kendi kendini belgeleyen olması gerektiğine dayanarak, kaynak kodun birkaç yorumla yazılması gerektiğini iddia ediyor . Diğerleri, kodun kapsamlı bir şekilde yorumlanması gerektiğini önerir ( kaynak koddaki boşluk olmayan karakterlerin %50'sinden fazlasının yorumlarda yer alması nadir değildir ).

Bu görüşler arasında, yorumların kendi başlarına ne yararlı ne de zararlı olduğu ve önemli olan, bunların doğru ve kaynak koduyla senkronize tutulması ve gereksiz, aşırı, bakımı zor veya başka türlü yararsız olmaları durumunda göz ardı edildiği iddiasıdır.

Yorumlar bazen , programlamaya sözleşme yaklaşımıyla tasarımdaki sözleşmeleri belgelemek için kullanılır .

ayrıntı düzeyi

Kodun hedeflenen kitlesine ve diğer hususlara bağlı olarak, ayrıntı ve açıklama düzeyi önemli ölçüde değişebilir.

Örneğin, aşağıdaki Java yorumu, programlamaya başlamayı öğretmek için tasarlanmış bir giriş metninde uygun olacaktır:

String s = "Wikipedia"; /* Assigns the value "Wikipedia" to the variable s. */

Ancak bu ayrıntı düzeyi, üretim kodu veya deneyimli geliştiricilerin dahil olduğu diğer durumlar bağlamında uygun olmayacaktır. Bu tür ilkel açıklamalar şu yönergeyle tutarsızdır: "İyi yorumlar ... niyeti açıklığa kavuşturur." Ayrıca, profesyonel kodlama ortamları için, iş operasyonları tarafından tanımlanan belirli bir performans gereksinimini karşılamak için ayrıntı düzeyi normalde iyi tanımlanmıştır.

Stiller

Yorumların kaynak kodda nasıl görünmesi gerektiğini düşünürken birçok stil alternatifi mevcuttur. Bir geliştirici ekibini içeren daha büyük projeler için, bir proje başlamadan önce yorum stilleri üzerinde anlaşmaya varılır ya da bir proje büyüdükçe bir sözleşme veya ihtiyaç meselesi olarak gelişir. Genellikle programcılar tutarlı, engelleyici olmayan, değiştirilmesi kolay ve kırılması zor stilleri tercih ederler.

Yorumu engelle

C'deki aşağıdaki kod parçaları, aynı temel bilgileri aktarırken yorumların stil açısından nasıl değişebileceğinin sadece küçük bir örneğini göstermektedir:

/*
     This is the comment body.
     Variation One.
*/
/***************************\
*                           *
* This is the comment body. *
* Variation Two.            *
*                           *
\***************************/

Kişisel tercih, programlama araçlarının esnekliği ve diğer hususlar gibi faktörler, kaynak kodunda kullanılan stilistik değişkenleri etkileme eğilimindedir. Örneğin, Varyasyon İki , yorumlardaki metnin hizalamasını ve görsel görünümünü otomatikleştirebilen kaynak kod düzenleyicileri olmayan programcılar arasında hoş karşılanmayabilir .

Yazılım danışmanı ve teknoloji yorumcusu Allen Holub, yorumların sol kenarlarını hizalamayı savunan bir uzmandır:

 /* This is the style recommended by Holub for C and C++.
  * It is demonstrated in ''Enough Rope'', in rule 29.
  */
 /* This is another way to do it, also in C.
 ** It is easier to do in editors that do not automatically indent the second
 ** through last lines of the comment one space from the first.
 ** It is also used in Holub's book, in rule 31.
 */

/* ve */'nin blok yorum sınırlayıcıları olarak kullanımı, PL/I'den C programlama dilinin hemen önceli olan B programlama diline miras alındı.

satır yorumları

Satır yorumları genellikle bir yorumun başlangıcını belirtmek için rastgele bir sınırlayıcı veya belirteç dizisi ve bir yorumun sonunu belirtmek için yeni bir satır karakteri kullanır.

Bu örnekte, ASCII karakterlerinden // satırın sonuna kadar olan tüm metin yok sayılır.

// -------------------------
// This is the comment body.
// -------------------------

Genellikle böyle bir yorum en soldan başlamalı ve tüm satıra yayılmalıdır. Bununla birlikte, birçok dilde, bu Perl örneğinde olduğu gibi, bir yorum eklemek için komut satırı ile satır içine bir yorum koymak da mümkündür :

print $s . "\n";     # Add a newline character after printing

Bir dil hem satır yorumlarına hem de blok yorumlarına izin veriyorsa, programlama ekipleri bunları farklı şekilde kullanma kuralına karar verebilir: örneğin satır yorumları yalnızca küçük yorumlar için ve yorumları bloklayarak daha yüksek düzeyli soyutlamaları tanımlar.

Etiketler

Programcılar, ortak sorunların dizine eklenmesine yardımcı olmak için yorumlarda gayri resmi etiketler kullanabilir . Daha sonra örneğin, yaygın programlama araçları ile aranacak mümkün olabilir Unix grep bile fayda veya sözdizimi-vurgulanan içinde metin editörleri . Bunlara bazen "kod etiketleri" veya "belirteçler" denir.

Bu tür etiketler büyük ölçüde farklılık gösterir, ancak şunları içerebilir:

  • HATA – düzeltilmesi gereken bilinen bir hata .
  • FIXME – düzeltilmelidir.
  • HACK – bir geçici çözüm.
  • YAPILACAK - yapılacak bir şey.
  • GERİ ALMA – önceki kodun tersine çevrilmesi veya "geri alınması".
  • XXX – diğer programcıları sorunlu veya yanlış yönlendirici kod konusunda uyarın

Örnekler

Karşılaştırmak

Yorumları belirtmek için kullanılan tipografik kurallar çok çeşitlidir. Ayrıca, bireysel programlama dilleri bazen benzersiz varyantlar sağlar. Ayrıntılı bir inceleme için lütfen programlama dili karşılaştırma makalesine bakın.

Ada

Ada programlama dili kullanır '-' satırın sonuna bir yorum yukarı göstermek için.

Örneğin:

  -- the air traffic controller task takes requests for takeoff and landing
   task type Controller (My_Runway: Runway_Access) is
      -- task entries for synchronous message passing
      entry Request_Takeoff (ID: in Airplane_ID; Takeoff: out Runway_Access);
      entry Request_Approach(ID: in Airplane_ID; Approach: out Runway_Access);
   end Controller;

APL

APL , satırın sonuna kadar bir yorumu belirtmek için kullanır .

Örneğin:

⍝ Now add the numbers:
ca+b ⍝ addition

("Sol") ve ("sağ") ilkelleri olan lehçelerde , yorumlar genellikle yok sayılan dizeler biçiminde ifadelerin içinde veya ayrı olabilir :

d2×c 'where' ca+ 'bound' b

AppleScript

AppleScript kodunun bu bölümü, o dilde kullanılan iki yorum stilini gösterir.

(*
This program displays a greeting.
*)
on greet(myGreeting)
     display dialog myGreeting & " world!"
end greet

-- Show the greeting
greet("Hello")

TEMEL

Bu klasik erken BASIC kod parçasında, yorum eklemek için REM ( "Remark" ) anahtar sözcüğü kullanılır.

10 REM This BASIC program shows the use of the PRINT and GOTO Statements.
15 REM It fills the screen with the phrase "HELLO"
20 PRINT "HELLO"
30 GOTO 20

Quick Basic , Q Basic , Visual Basic , Visual Basic .NET ve VB Script dahil daha sonraki Microsoft BASIC'lerinde ; ve FreeBASIC ve Gambas gibi alt türlerde , bir ' (kesme işareti) karakterinden sonra bir satırdaki herhangi bir metin de yorum olarak kabul edilir.

Visual Basic .NET'te bir örnek:

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' The following code is executed when the user
        ' clicks the button in the program's window.
        rem comments still exist.

        MessageBox.Show("Hello, World") 'Show a pop-up window with a greeting
    End Sub
End Class

C

Bu C kodu parçası, koşullu bir ifadenin amacını açıklamak için bir giriş yorumu veya "blok yorumu" kullanımını gösterir . Yorum, temel terimleri ve kavramları açıklar ve kodu yazan programcının kısa bir imzasını içerir.

 /*
  * Check if we are over our maximum process limit, but be sure to
  * exclude root. This is needed to make it possible for login and
  * friends to set the per-user process limit to something lower
  * than the amount of processes root is running. -- Rik
  */
 if (atomic_read(&p->user->processes) >= p->rlim[RLIMIT_NPROC].rlim_cur
     && !capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE))
     goto bad_fork_free;

C99'dan beri, tek satırlık bir yorumu belirten C++'dan // sözdizimini kullanmak da mümkün olmuştur.

Cisco IOS ve IOS-XE yapılandırması

Ünlem ( ! ) Ancak bu tür yorumlar vardır, Cisco yönlendirici yapılandırma modunda işareti yorumların için kullanılabilir değil kaydedilir uçucu olmayan belleğe (başlatma-config içerir), ne de "gösteri run" komutu tarafından görüntülenen .

Aslında yapılandırmanın bir parçası olan ve insan tarafından okunabilir içeriği eklemek mümkündür ve şu yollarla NVRAM başlangıç ​​yapılandırmasına kaydedilebilir :

  • Bir arabirimin veya bir BGP komşusunun yapılandırmasına bir açıklama eklemek için kullanılan "açıklama" komutu
  • Statik bir rotaya açıklama eklemek için "name" parametresi
  • Erişim listelerinde "açıklama" komutu
! Paste the text below to reroute traffic manually
config t
int gi0/2
no shut
ip route 0.0.0.0 0.0.0.0 gi0/2 name ISP2
no ip route 0.0.0.0 0.0.0.0 gi0/1 name ISP1
int gi0/1
shut
exit

Soğuk füzyon

ColdFusion , HTML yorumlarına benzer yorumlar kullanır , ancak iki tire yerine üç kullanır. Bu yorumlar ColdFusion motoru tarafından yakalanır ve tarayıcıya yazdırılmaz.

 <!--- This prints "Hello World" to the browser. --->
 <cfoutput>
   Hello World<br />
 </cfoutput>

Fortran IV

Bu Fortran IV kod parçası, çok sütun odaklı olan bu dilde yorumların nasıl kullanıldığını gösterir. 1. sütundaki "C" harfi, tüm satırın yorum olarak değerlendirilmesine neden olur.

C
C Lines that begin with 'C' (in the first or 'comment' column) are comments
C
      WRITE (6,610)
  610 FORMAT(12H HELLO WORLD)
      END

Bir satırın sütunlarının aksi takdirde dört alan olarak ele alındığını unutmayın: 1 ila 5 etiket alanıdır, 6 satırın önceki ifadenin devamı olarak alınmasına neden olur; ve beyanlar ve ifadeler 7'den 72'ye kadardır.

90

Bu Fortran kod parçası, yorumların kendileri temel biçimlendirme kurallarını açıklayan açıklamalarla birlikte, o dilde yorumların nasıl kullanıldığını gösterir.

!* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!* All characters after an exclamation mark are considered as comments *
!* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
program comment_test
    print '(A)', 'Hello world' ! Fortran 90 introduced the option for inline comments.
end program

Haskell

Haskell'deki satır yorumları satırın sonuna kadar '--' (iki tire) ile başlar ve çoklu satır yorumları '{-' ile başlar ve '-}' ile biter.

{- this is a comment
on more lines -}
-- and this is a comment on one line
putStrLn "Wikipedia"  -- this is another comment

Haskell ayrıca "Kuş Stili" olarak bilinen bir okuma yazma programlama yöntemi sağlar . Burada > ile başlayan tüm satırlar kod olarak yorumlanır, geri kalan her şey yorum olarak kabul edilir. Ek bir gereksinim, kod bloğundan önce ve sonra her zaman boş bir satır bırakmanızdır:

In Bird-style you have to leave a blank before the code.

> fact :: Integer -> Integer
> fact 0 = 1
> fact (n+1) = (n+1) * fact n

And you have to leave a blank line after the code as well.

LaTeX kullanılarak Haskell'de okuryazar programlama da yapılabilir . Richard Bird'ün stili yerine kod ortamı kullanılabilir: LaTeX stilinde bu, yukarıdaki örneğe eşdeğerdir, kod ortamı LaTeX girişinde tanımlanabilir. İşte basit bir tanım:

\usepackage{verbatim}
\newenvironment{code}{\verbatim}{\endverbatim}

ondan sonra

% the LaTeX source file
The \verb|fact n| function call computes $n!$ if $n\ge 0$, here is a definition:\\
\begin{code}
fact :: Integer -> Integer
fact 0 = 1
fact (n+1) = (n+1) * fact n
\end{code}
Here more explanation using \LaTeX{} markup

Java

Bu Java kod parçası, setToolTipTextyöntemi açıklamak için kullanılan bir blok yorumunu gösterir . Biçimlendirme, Sun Microsystems Javadoc standartlarıyla uyumludur . Yorum, Javadoc işlemcisi tarafından okunacak şekilde tasarlanmıştır.

/**
 * This is a block comment in Java.
 * The setToolTipText method registers the text to display in a tool tip.
 * The text is displayed when the cursor lingers over the component.
 *
 * @param text  The string to be displayed.  If 'text' is null,
 *              the tool tip is turned off for this component.
 */
public void setToolTipText(String text) {
    // This is an inline comment in Java. TODO: Write code for this method.
}

JavaScript

JavaScript , yorumlardan önce // ve çok satırlı yorumlar için /* */ kullanır.

// A single line JavaScript comment
var iNum = 100;
var iTwo = 2; // A comment at the end of line
/*
multi-line
JavaScript comment
*/

Lua

Lua programlama dili çift tire kullanır --, benzer şekilde tek satır yorumlar için Ada , Eiffel , Haskell , SQL ve VHDL dilleri. Lua ayrıca --[[bir kapanışa kadar başlayan ve devam eden blok yorumlara da sahiptir.]]

Örneğin:

--[[A multi-line
long comment
]]
print(20)   -- print the result

Bir kod parçasını yorumlamak için yaygın bir teknik, kodu aşağıdaki gibi --[[ve arasına almaktır --]]:

--[[
print(10)
--]]
-- no action (commented out)

Bu durumda, ilk satıra tek bir kısa çizgi ekleyerek kodu yeniden etkinleştirmek mümkündür:

---[[
print(10)
--]]
--> 10

İlk örnekte, --[[ilk satırdaki uzun bir yoruma başlar ve son satırdaki iki tire hala o yorumun içindedir. İkinci örnekte, sıra ---[[sıradan, tek satırlı bir yorum başlatır, böylece ilk ve son satırlar bağımsız yorumlar haline gelir. Bu durumda, printyorumların dışındadır. Bu durumda, son satır, ile başladığı için bağımsız bir yorum haline gelir --.

Lua'da Programlama "Uzun dizeler" başlıklı bölümde okuyabileceğiniz gibi, Lua'daki uzun yorumlar bunlardan daha karmaşık olabilir .

MATLAB

In MATLAB 'ın programlama dili, '%' karakteri tek satırlık açıklama belirtir. Çok satırlı yorumlar %{ ve %} köşeli parantezler aracılığıyla da mevcuttur ve iç içe yerleştirilebilir, örn.

% These are the derivatives for each term
d = [0 -1 0];

%{
  %{
    (Example of a nested comment, indentation is for cosmetics (and ignored).)
  %}
  We form the sequence, following the Taylor formula.
  Note that we're operating on a vector.
%}
seq = d .* (x - c).^n ./(factorial(n))

% We add-up to get the Taylor approximation
approx = sum(seq)

Nim

Nim , satır içi yorumlar için '#' karakterini kullanır. Çok satırlı blok yorumlar '#[' ile açılır ve ']#' ile kapatılır. Çok satırlı blok yorumları iç içe yerleştirilebilir.

Nim ayrıca karışık Markdown ve ReStructuredText işaretlemelerini kullanan belge yorumlarına da sahiptir . Satır içi dokümantasyon yorumları '##' kullanır ve çok satırlı blok dokümantasyon yorumları '##[' ile açılır ve ']##' ile kapatılır. Derleyici , dokümantasyon yorumlarından HTML , LaTeX ve JSON dokümantasyonu oluşturabilir . Dokümantasyon yorumları soyut sözdizimi ağacının bir parçasıdır ve makrolar kullanılarak çıkarılabilir.

## Documentation of the module *ReSTructuredText* and **MarkDown**
# This is a comment, but it is not a documentation comment.

type Kitten = object  ## Documentation of type
  age: int  ## Documentation of field

proc purr(self: Kitten) =
  ## Documentation of function
  echo "Purr Purr"  # This is a comment, but it is not a documentation comment.

# This is a comment, but it is not a documentation comment.

OCaml

OCaml , bir kod bloğunu yorumlarken yararlı olan iç içe geçmiş yorumları kullanır.

codeLine(* comment level 1(*comment level 2*)*)

paskal

Niklaus Wirth'in pascal dil ailesinde ( Modula-2 ve Oberon dahil ), yorumlar '(*' ile açılır ve '*)' ile tamamlanır.

Örneğin:

(* test diagonals *)
columnDifference := testColumn - column;
if (row + columnDifference = testRow) or
    .......

Pascal'ın modern lehçelerinde bunun yerine '{' ve '}' kullanılır.

Perl

Perl ve diğer birçok komut dosyası dilinde satır yorumları, bir karma (#) simgesiyle başlar.

# A simple example
# 
my $s = "Wikipedia"; # Sets the variable s to "Wikipedia".
print $s . "\n";     # Add a newline character after printing

Perl, normal bir blok yorumlama yapısı yerine, okuryazar programlama için bir biçimlendirme dili olan Plain Old Documentation kullanır , örneğin:

=item Pod::List-E<gt>new()

Create a new list object. Properties may be specified through a hash
reference like this:

  my $list = Pod::List->new({ -start => $., -indent => 4 });

See the individual methods/properties for details.

=cut

sub new {
    my $this = shift;
    my $class = ref($this) || $this;
    my %params = @_;
    my $self = {%params};
    bless $self, $class;
    $self->initialize();
    return $self;
}

r

R, yalnızca karma (#) karakteriyle başlatılan satır içi yorumları destekler.

# This is a comment
print("This is not a comment")  # This is another comment

Raku

Raku (önceden Perl 6 olarak adlandırılıyordu) normal Perl ile aynı satır yorumlarını ve POD Belgelendirme yorumlarını kullanır (yukarıdaki Perl bölümüne bakın), ancak yapılandırılabilir bir blok yorum türü ekler: "çok satırlı / gömülü yorumlar".

Bunlar bir karma karakterle başlar, ardından bir ters tik ve ardından bazı açılış parantezleri ve eşleşen kapanış parantezleri ile biter. İçerik yalnızca birden çok satıra yayılamaz, aynı zamanda satır içi olarak da gömülebilir.

#`{{ "commenting out" this version 
toggle-case(Str:D $s)

Toggles the case of each character in a string:

  my Str $toggled-string = toggle-case("mY NAME IS mICHAEL!");

}}

sub toggle-case(Str:D $s) #`( this version of parens is used now ){
    ...
}

PHP

PHP'deki yorumlar ya C++ tarzında (hem satır içi hem de blok) olabilir veya karmalar kullanabilir. PHPDoc , Javadoc'tan uyarlanmış bir stildir ve PHP kodunu belgelemek için ortak bir standarttır.

Güç kalkanı

İçinde Yorumlar Windows PowerShell

# Single line comment
Write-Host "Hello, World!"

<# Multi
   Line
   Comment #>

Write-Host "Goodbye, world!"

piton

Python'daki satır içi yorumlar , bu koddaki iki örnekte olduğu gibi karma (#) karakterini kullanır:

# This program prints "Hello World" to the screen
print("Hello World!")  # Note the new syntax

Bu makalede tanımlandığı gibi blok yorumları Python'da teknik olarak mevcut değildir. Üçlü tırnaklı bir dizeyle temsil edilen bir çıplak dize değişmezi kullanılabilir, ancak yorumlayıcı tarafından "#" yorumuyla aynı şekilde yoksayılmaz. Aşağıdaki örneklerde, üçlü çift tırnaklı dizeler bu şekilde yorum işlevi görür, ancak belge dizileri olarak da değerlendirilir :

"""
Assuming this is file mymodule.py, then this string, being the
first statement in the file, will become the "mymodule" module's
docstring when the file is imported.
"""

class MyClass:
    """The class's docstring"""

    def my_method(self):
        """The method's docstring"""

def my_function():
    """The function's docstring"""

yakut

İçinde Yorumlar Ruby .

Tek satırlık yorum: (satır "#" karmasıyla başlar)

puts "This is not a comment"

# this is a comment

puts "This is not a comment"

Çok satırlı yorum: (yorumlar "başla" ve "bitiş" anahtar kelimeleri arasında gider)

puts "This is not a comment"

=begin

whatever goes in these lines

is just for the human reader

=end

puts "This is not a comment"

SQL

SQL'deki standart yorumlar, iki tire kullanılarak yalnızca tek satır biçimindedir:

-- This is a single line comment
-- followed by a second line
SELECT COUNT(*)
       FROM Authors
       WHERE Authors.name = 'Smith'; -- Note: we only want 'smith'
                                     -- this comment appears after SQL code

Alternatif olarak, C ve Java sözdiziminde kullanılan "blok yorum" stiliyle aynı olan bir yorum biçimi sözdizimi Transact-SQL , MySQL , SQLite , PostgreSQL ve Oracle tarafından desteklenir .

MySQL ayrıca hash (#) karakterinden satırın sonuna kadar olan yorumları da destekler.

Süratli

Tek satırlı yorumlar iki eğik çizgiyle (//) başlar:

// This is a comment.

Çok satırlı yorumlar bir eğik çizgi ve ardından bir yıldız işareti (/*) ile başlar ve bir yıldız işaretinin ardından bir eğik çizgi (*/) ile biter:

/* This is also a comment
 but is written over multiple lines. */

Swift'deki çok satırlı yorumlar, diğer çok satırlı yorumların içine yerleştirilebilir. Çok satırlı bir yorum bloğu başlatarak ve ardından ilk blok içinde ikinci bir çok satırlı yorum başlatarak iç içe yorumlar yazarsınız. İkinci blok daha sonra kapatılır, ardından ilk blok gelir:

/* This is the start of the first multiline comment.
 /* This is the second, nested multiline comment. */
 This is the end of the first multiline comment. */

XML (veya HTML)

İçinde Yorumlar XML (ya da HTML) ile tanıtıldı

<!--

ve sonlandırıcıya kadar birkaç satıra yayılabilir,

-->

Örneğin,

<!-- select the context here -->
<param name="context" value="public" />

SGML ile uyumluluk için , yorumların içinde "--" (çift tire) dizesine izin verilmez.

Güvenlik sorunları

In yorumlanır dillerin comments programının son kullanıcıya görüntülenebilir. "Yorum yapılan" kod bölümleri gibi bazı durumlarda, bu bir güvenlik açığı oluşturabilir .

Ayrıca bakınız

Notlar ve referanslar

daha fazla okuma

Dış bağlantılar