Saya terus mendapatkan simpul ketika saya memanipulasi jalur dan nama file, karena saya tidak memiliki sistem penamaan umum yang saya gunakan.
Saya perlu membuat standar penamaan dan mematuhinya, dan saya ingin menjadi jelas dan konsisten dengan yang lain, jadi saya membuka diri untuk mempelajari jawaban kanonik.
Pertimbangkan masalah mainan ini: (Contoh Windows, tapi mudah-mudahan jawabannya harus independen terhadap platform)
Anda telah diberi nama lengkap folder: C: \ users \ OddThinking \ Documents \ My Source. Anda ingin menjalankan folder di bawahnya, dan kompilasi semua .src ke .obj.
Pada titik tertentu Anda melihat string berikut.
C:\users\OddThinking\Documents\My Source\Widget\foo.src
Jadi, nama pengidentifikasi apa yang akan Anda gunakan untuk bagian-bagian itu?
A) foo
B) foo.src
C) src
D) .src
E) C:\users\OddThinking\Documents\My Source\ - i.e. the top of the tree.
F) Widget\foo.src - i.e. the path from the top of the tree to the leaf.
G) Widget - i.e. one node of the tree.
H) C:\users\OddThinking\Documents\My Source\Widget\ - i.e. the name of the folder
I) C:\users\OddThinking\Documents\My Source\Widget\foo.src
Biarkan saya memberikan beberapa jawaban, untuk membantu Anda memulai.
A) nama dasar?
B) nama file? Atau apakah itu nama file? Perbedaannya penting ketika memilih nama pengidentifikasi, dan saya tidak pernah konsisten di sini.
C) Perpanjangan
D) Perpanjangan. Tunggu, itu yang saya sebut C. Haruskah saya menghindari menyimpan titik, dan hanya memasukkan ketika diperlukan? Bagaimana jika tidak ada titik pada file tertentu?
H) nama jalur? Atau tunggu, apakah hanya jalannya?
I) nama file. Tunggu, itu yang saya sebut C. Path. Tunggu, itu yang saya sebut H. Mungkin H harus menjadi nama folder. Bukankah "folder" istilah khusus Windows?
sumber
stem
.Jawaban:
Saya pikir pencarian Anda untuk konvensi penamaan "standar" akan sia-sia. Berikut ini proposal saya, berdasarkan program-program terkenal yang sudah ada:
A) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo .src
B) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo.src
C) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo. src (tanpa titik)
D) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo .src (dengan titik)
E) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo.src
F) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo.src
G) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo.src
H) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo.src
I) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo.src
sumber
1.
(nama file saja tanpa ekstensi), saya memutuskan untuk pergiFile Title
dulu karena kurangnya konvensi yang jelas atau setidaknya konsensus global.A
(nama file tanpa ekstensi), Anda dapat menggunakanstem
. Referensi: doc.rust-lang.org/std/path/struct.Path.html#method.file_stem , llvm.org/docs/doxygen/html/… , boost.org/doc/libs/1_60_0/libs/filesystem/ doc / ...Pertanyaan bagus pertama-tama, +1 saya. Hal ini mengganggu saya ketika saya harus membuat banyak fungsi di kelas Utilitas sekali. GetFileName? atau GetFullName? GetApplicationPath berarti path lengkap atau nama direktori? dan seterusnya. Saya berasal dari latar belakang .NET, jadi saya pikir saya bisa menambahkan sedikit lebih banyak untuk jawaban yang sangat baik oleh @blinry.
Rangkuman: (Dalam huruf miring adalah hal yang tidak akan saya gunakan sebagai programmer)
Path : Path menentukan lokasi unik dalam sistem file (kecuali path relatifnya). Nama path lebih jarang digunakan, tetapi saya akan tetap dengan path - cukup banyak menjelaskan apa itu. Path dapat menunjuk ke file atau folder atau bahkan tidak sama sekali (C: \). Path bisa:
My Source\Widget\
adalah jalur relatif jugaWidget\foo.src
. Cukup jelas.C:\users\OddThinking\Documents\My Source\Widget\foo.src
karenanya jalur penuh. Lihat di akhir apa yang saya sebut path lengkap yang menunjuk ke sebuah file dan yang berakhir sebagai direktori.The halaman wiki dan NET penamaan untuk jalan konsisten.
Root Path atau Root Directory : Former adalah konvensi .NET sementara yang terakhir lebih terdengar di lingkaran UNIX. Meskipun saya suka keduanya, saya cenderung menggunakan yang pertama. Di windows, tidak seperti UNIX, memiliki banyak jalur root yang berbeda, satu untuk setiap partisi. Sistem Unix memiliki satu direktori root yang menyimpan informasi tentang direktori dan file lain. Misalnya.
C:\
adalah path root.Folder atau Nama Folder :
Widget
,OddThinking
dll dalam kasus Anda. Ini mungkin konvensi Windows saja (sebenarnya itu pemikiran aneh saya sendiri :)), namun saya sangat keberatan dengan blinry`s menjawab "Direktori". Meskipun untuk direktori pengguna normal berarti sama dengan folder (seperti subfolder, subdirektori), saya percaya dari sudut teknis "direktori" harus terdengar seperti alamat yang memenuhi syarat untuk target dan bukan target itu sendiri. Lebih jauh di bawah.users
OddThinking
danDocuments
merupakan sub folder.users
OddThinking\
,OddThinking\Documents\
danOddThinking\Documents\My Source\Widget\
merupakan sub direktori. Tapi kita tidak perlu repot tentang itu, kan?users
OddThinking
adalah folder anak (dan juga folder)OddThinking
users
adalah folder induknya (Hanya menyebutkan berbagai terminologi, bukan masalah besar).Direktori atau Nama Direktori : Yang pertama digunakan secara umum dalam kehidupan nyata, yang terakhir harus dalam kode. Ini mengacu pada jalur yang sepenuhnya memenuhi syarat (atau hanya path lengkap ) hingga folder induk target . Dalam kasus Anda,
C:\users\OddThinking\Documents\My Source\Widget
(Ya direktori tidak pernah dimaksudkan untuk menunjuk ke file). Saya menggunakan nama direktori dalam kode saya karena direktori adalah kelas dalam. NET dan Nama Direktori adalah apa perpustakaan itu sendiri menyebutnya. Cukup konsisten dengan dirname yang digunakan dalam sistem UNIX.Nama File atau Nama Basah : Nama file beserta ekstensi. Dalam kasus Anda:
foo.src
. Saya akan mengatakan bahwa untuk penggunaan non teknis saya lebih suka nama file (itu artinya pengguna akhir) tetapi untuk tujuan teknis saya akan tetap menggunakan nama samaran . Nama File sering digunakan oleh MS, tetapi saya terkejut bagaimana mereka tidak konsisten tidak hanya dalam dokumentasi tetapi bahkan di perpustakaan . Ada nama file yang bisa berarti nama file atau path lengkap file. Jadi saya mendukung nama kecil, itulah yang saya sebut dalam kode. Halaman ini di wiki juga mengatakan nama file bisa berarti path lengkap atau nama dasar. Anehnya bahkan dalam. NET saya dapat menemukan nama pengguna penggunaan berarti nama root file.Extension atau Nama File Extension atau File Extension : Saya suka yang terakhir. Semua mengacu pada hal yang sama tetapi apa lagi soal debat! Wiki mengatakan itu
src
sementara waktu lalu saya ingat membaca bahwa banyak bahasa menafsirkannya sebagai.src
. Perhatikan titiknya. Jadi sekali lagi pendapat saya adalah, untuk penggunaan biasa tidak masalah apa itu, tetapi sebagai seorang programmer saya selalu melihat ekstensi sebagai.src
.Ok, saya mungkin telah mencoba mengambil beberapa penggunaan standar, tetapi di sini ada dua konvensi saya yang saya ikuti. Dan ini tentang jalur penuh.
Saya biasanya memanggil path lengkap yang menunjuk ke file sebagai path file . Bagi saya path file sudah jelas, ini memberitahu saya apa itu. Meskipun dengan nama file saya menemukannya sebagai nama file, dalam kode saya saya menyebutnya nama file . Ini juga konsisten dengan " nama direktori ". Dari sisi teknis, nama mengacu pada nama yang sepenuhnya memenuhi syarat! Frustasi .NET menggunakan nama file istilah (jadi saya punya kasus saya di sini) dan kadang-kadang mengajukan path untuk ini.
Saya menyebut path lengkap yang berakhir sebagai direktori direktori. Bahkan seseorang dapat memanggil setiap bagian dari alamat yang tidak menunjuk ke suatu file direktori. Demikian
C:\users\OddThinking\Documents\My Source\
juga direktori,C:\users\OddThinking\
direktori, atau bahkanOddThinking\Documents\My Source\
(lebih baik menyebutnya sub direktori atau bahkan jalur relatif lebih baik - semua itu tergantung pada konteks yang Anda hadapi). Jauh di atas saya menyebutkan sesuatu yang berbeda tentang direktori yang merupakan nama direktori. Inilah pendapat saya: Saya akan mendapatkan jalan baru untuk menghindari kebingungan. Apa iniD:\Fruit\Apple\Pip\
? Direktori Tetapi jika pertanyaannya adalah apa itu direktori atau bahkan nama direktori yang lebih baikD:\Fruit\Apple\Pip\
, jawabannya adalahD:\Fruit\Apple\
. Semoga ini jelas.Saya akan mengatakan lebih baik tidak khawatir tentang dua istilah terakhir karena itulah yang paling membingungkan (bagi saya pribadi). Cukup gunakan istilah path lengkap !
Untuk menjawab Anda:
sehubungan dengan jalan yang telah Anda berikan
A) Tidak tahu. Ngomong-ngomong, aku tidak perlu mendapatkannya sendirian.
B) nama dasar
C) Saya hanya akan menyebutnya ekstensi file untuk saat ini, saya paling tidak khawatir karena saya tidak pernah membutuhkannya untuk disebutkan dalam kode saya.
D) ekstensi file pasti.
E) Saya tidak berpikir ini adalah persyaratan tujuan umum. Tidak ada ide. Dalam direktori .NET base sama dengan nama direktori.
F) jalur relatif
G) folder (folder induk ke nama dasar
foo.src
)H) nama direktori
I) path lengkap (atau bahkan nama file)
secara umum (maaf karena sedikit bertele-tele, hanya untuk mengarahkan titik rumah) tetapi dengan asumsi
foo.src
memang fileA) NA
B) nama dasar
C) NA
D) ekstensi
E) direktori atau cukup path
F) jalur relatif
G) NA
H) direktori atau cukup path
I) path lengkap (atau bahkan nama file)
Mengemudi lebih jauh dengan satu contoh dari sisi saya:
Pertimbangkan jalannya
C:\Documents and Settings\All Users\Application Data\s.sql
.C:\Documents and Settings\All Users\Application Data\s.sql
adalah path lengkap (yang merupakan nama file)C:\Documents and Settings\All Users\Application Data\
adalah nama direktori.Sekarang perhatikan jalannya
C:\Documents and Settings\All Users\Application Data
C:\Documents and Settings\All Users\Application Data
adalah path lengkap (yang merupakan direktori)C:\Documents and Settings\All Users
adalah nama direktori.Dua tips saya:
Saya mengikuti aturan praktis ini bahwa ketika membahas alamat lengkap terlepas dari tipenya, saya hampir selalu menyebutnya "path lengkap". Ini tidak hanya menghilangkan penggunaan dua terminologi untuk path file dan path folder, tetapi juga menghindari potensi kebingungan jika Anda akan menamai file tersebut sebagai nama file (yang bagi sebagian besar pengguna segera diterjemahkan menjadi nama file). Tapi ya jika Anda harus spesifik tentang jenis path, lebih baik untuk memberi nama daripada nama file atau direktori daripada "path" yang lebih umum.
Apa pun itu, Anda akan memiliki ide Anda sendiri dalam pikiran, konsisten dengan itu sepanjang. Memiliki konsensus di antara anggota tim bahwa ini berarti ini dan bukan itu.
Sekarang hanya dari lingkaran saya punya beberapa latihan. Merek istilah baru adalah apa yang digunakan pada OS X dan mesin android. Dan semua ini hanya tentang jalur fisik dalam sistem file. Seperangkat terminologi baru akan muncul jika alamat web. Saya berharap seseorang untuk mengisi kekosongan di utas yang sama ini :) Saya akan senang mendengar konvensi yang Anda ikuti sebelumnya.
sumber
Dalam C ++, Boost.Filesystem telah menemukan nomenklatur untuk berbagai bagian dari jalur. Lihat dokumentasi referensi dekomposisi jalur untuk detail, serta tutorial ini .
Berikut ringkasan berdasarkan tutorialnya. Untuk:
c:\foo\bar\baa.txt
/foo/bar/baa.txt
Anda mendapatkan:
Standar C ++ ISO / IEC 14882: 2017
Apalagi terminologi Boost.Filesystem telah diadopsi oleh C ++ 17 => Lihat
std::filesystem
sumber
path
,fullpath
?stem()
merupakan bagian dari nama file , bukan path .pathlib
Pustaka standar Python memiliki konvensi penamaan yang bagus untuk komponen lintasan: https://docs.python.org/3/library/pathlib.htmla) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo .src
b) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo.src
c) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo. src (tanpa titik)
d) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo .src (dengan titik)
e) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo.src
f) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo.src
g) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo.src
h) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo.src
i) C: \ users \ OddThinking \ Documents \ My Source \ Widget \ foo.src
sumber
Tidak, kamu tidak gila.
Dalam sistem Windows, kadang-kadang jalur direktori yang berisi file disebut jalur , yang seperti itu dari awal. Jadi, misalnya,
Pendekatan Unix / Linux jauh lebih logis, dan itulah yang semua orang sebutkan di atas: path termasuk nama file itu sendiri. Namun, jika Anda mengetik "panggil /?" di baris perintah Windows, Anda mendapatkan ini:
Jadi begitulah, "path only" dan "file name only". Pada saat yang sama, mereka menyebut seluruh string sebagai "nama jalur yang memenuhi syarat" yang dipahami sebagai huruf drive plus jalur plus nama file. Jadi tidak ada kebenaran nyata. Itu sia-sia. Anda telah dikhianati.
Bagaimanapun,
Untuk menjawab pertanyaan Anda
Inilah cara saya memberi nama contoh Anda:
ADEF tidak memiliki nama panggilan sederhana. Dan karena php mungkin adalah bahasa lintas platform yang paling banyak dikenal, semua orang mengerti "nama dasar" dan "dirname" jadi saya akan tetap menggunakan penamaan itu. Nama lengkap juga jelas; path lengkap akan sedikit ambigu tetapi sebagian besar waktu itu berarti hal yang sama.
sumber