Chiến lược gói tốt nhất là gì?


8

Tôi đang dự định tích hợp một công cụ bên ngoài ( ffmpeg trong trường hợp cụ thể của tôi, nhưng thực tế nó có thể là bất cứ thứ gì, vì lolng vì các nhiệm vụ của nó là những công việc dài). Công cụ này có rất nhiều tham số dòng lệnh.

Hiện tại, tôi đã thực hiện những điều đơn giản với nó, đã yêu cầu tôi rất nhiều bài viết hay, để nhúng tất cả thông tin mà nó có thể trả lại cho tôi.

Bây giờ tôi phải đối mặt với nhiệm vụ thậm chí phức tạp hơn là phải gửi cho nó một loạt các tham số xử lý các lỗi có thể xảy ra.

Vì vậy, một cách tốt nhất cho điều đó là gì?

  1. Tạo các lớp chứa tất cả các tùy chọn có thể
  2. Dựa vào một tương đương ngược của commons-cli / CliBuilder / OptionParser
  3. Viết trực tiếp tất cả các tùy chọn từ đầu vào của người dùng
  4. Sức mạnh của Obiwan Kenobi (hoặc bất cứ điều gì tôi thậm chí không biết về)

Xin lưu ý rằng tôi làm điều đó bằng một ngôn ngữ không phổ biến (vì lợi ích của tôi, đừng hỏi tôi nó là gì, vì nó trông giống như một sự kết hợp tuyệt vọng và vô trùng giữa CoffeeScriptlua ), do đó, không thể có khung làm việc những gì tôi muốn trong ngôn ngữ tôi sử dụng.


Câu hỏi này liên quan đến lập trình và như vậy thực sự thuộc về StackOverflow.
Tom Anderson

2
Vâng, tôi đặt câu hỏi của tôi cho bảng trắng, không phải bàn phím. Và đây là lý do tại sao tôi hỏi nó ở đây.
Riduidel

1
MC Frontalot. Oh chờ đợi, bạn nói là tốt nhất w rap chiến lược.
Jason Baker

Câu trả lời:


3

Tôi cho rằng câu trả lời chính thống sẽ là tìm ra mô hình miền nào mà công cụ thể hiện, sau đó viết một số đối tượng thể hiện mô hình đó bằng ngôn ngữ của bạn và biết cách xây dựng các dòng lệnh. Tôi không biết rõ về ffmpeg, nhưng tôi tin rằng mô hình là âm thanh truyền từ tệp nguồn sang tệp đầu ra, mỗi tệp ở một định dạng cụ thể, thông qua một loạt các bộ lọc. Vì vậy, có thể bạn có một lớp FfmpegJob có hai đối tượng SoundFile, một cho đầu vào và một cho đầu ra và một danh sách (có thể trống) các đối tượng SoundFilter. Mỗi đối tượng cấp dưới có một phương thức để tự biến thành một chuỗi các đối số cho ffmpeg (ví dụ: HighpassFilter sẽ biến thành {"--highpass", "200"} hoặc bất cứ điều gì). Lớp công việc sau đó có thể dễ dàng xây dựng một dòng lệnh aa từ cấp dưới của nó. Bạn cần phải viết một lớp cho mỗi tùy chọn, nhưng bạn có thể nâng mã chung lên một siêu lớp; mỗi lớp con nên khá đơn giản.

Điều này liên quan đến nồi hơi nhiều hơn so với cách tiếp cận đảo ngược, nhưng mua cho bạn loại an toàn. Ngoài ra, nó cung cấp cho bạn một nơi mà từ đó bạn có thể bắt đầu treo nhiều chức năng hơn: bạn có thể đặt xác thực hoặc tính toán trong các đối tượng bộ lọc hoặc kết hợp một số tùy chọn vào một bộ lọc phức tạp hơn.


Chết tiệt, tôi đã quên đề cập rằng ngôn ngữ không lựa chọn của tôi là KHÔNG an toàn.
Riduidel

Không quan trọng. Tôi cũng sẽ làm theo cách này trong Python.
Tom Anderson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.