2009-02-02 30 views
5

Bạn nên sao chép và sử dụng các tệp khung hoặc mẫu để làm cơ sở cho tập lệnh hoặc ứng dụng mới.Tệp bộ xương yêu thích của bạn cho các ngôn ngữ khác nhau là gì?

Ví dụ, tôi sử dụng những cái sau (các emacs với mô-đun tự động chèn tự động mở một bản sao của tệp bộ xương thích hợp khi tạo tệp mới).

Perl:

#!/usr/bin/perl -w 

use strict; 
use Getopt::Long; 

my $verbose = 1; 

GetOptions("verbose!" => \$verbose 
) or die("options error"); 

C++:

#include <iostream> 
#include <stdexcept> 

int main(int argc, char** argv){ 
    try{ 

    } 
    catch(std::exception& e){ 
    std::cerr << e.what() << std::endl; 
    return EXIT_FAILURE; 
    } 
    return EXIT_SUCCESS; 
} 

Có thể cho rằng, người ta có thể bao gồm mã cơ bản cho boost::program_options, vv

file skeleton yêu thích của bạn là gì?

Trả lời

3

mẫu Perl của tôi trông như thế này:

Nếu tôi mở một module .pm:

use MooseX::Declare; 
class What::Ever { 

}; 

1; 

Hoặc, nếu không muốn nói về một dự án MooseX::Declare:

package What::Ever; 
use Moose; 

1; 

Nếu đó là một .pl tệp:

#!/usr/bin/env perl 
use strict; 
use warnings; 
use feature ':5.10'; 

Vì tôi sử dụng autoinsert.el, tôi cũng yêu cầu tôi nếu tôi muốn sử dụng FindBin; nếu có:

#!/usr/bin/env perl 
use strict; 
use warnings; 
use feature ':5.10'; 

use FindBin qw($Bin); 
use lib "$Bin/../lib"; 

Mã emacs cần thiết nằm trong kho lưu trữ elisp của tôi tại http://github.com/jrockway/elisp/blob/fd5d73530a117a13ddcde92bc1c22aba1bfde1f0/_local/auto-inserts.el.

Cuối cùng, tôi nghĩ bạn sẽ thích MooseX::Getopt cho đồng bằng Getopt. Đó là một cách tiếp cận dễ bảo trì hơn để viết các kịch bản "một lần". (Một vài dòng tiếp theo đi một cái gì đó như:

use My::Script;     # that's why we did the "use lib" thing 
My::Script->new_with_options->run; # this parses the command line, creates a new object, and runs the script 

Tất cả các mã quan trọng đi trong một lớp học có thể được đơn vị kiểm tra, dán mắt vào một ứng dụng web, vv)

+0

Tuyệt, tôi không biết MooseX. Cảm ơn! – Frank

3

duy nhất tập tin bộ xương tôi có là cho LaTeX.

\documentclass{article} 
%\documentclass[11pt]{amsart} 
\usepackage[dvips]{graphicx} 
\usepackage{amsmath} 
\usepackage{amssymb} 
\usepackage{amsthm} 
\usepackage{cancel} 
\oddsidemargin0cm 
\topmargin-1cm 
\textwidth16.5cm 
\textheight23.5cm 
\parskip1ex 
\parindent0ex 
\begin{document} 
\title{ ... } 
\author{ ... } 
\date{ ... } 
\maketitle 

\end{document} 

Rõ ràng là tôi sử dụng điều này để viết bài toán.

Nếu không, tôi luôn bắt đầu từ đầu. Không có ngôn ngữ lập trình Tôi có thể nghĩ về nơi mà cơ sở hạ tầng cần thiết nhiều hơn bạn có thể giữ xung quanh trong bộ não của bạn hoặc mất nhiều thời gian hơn 20 giây để loại ra.

+0

Nhân số lượng tệp bạn tạo trong cuộc đời của bạn bằng 4 dòng soạn thảo cho mỗi tệp .... và tôi nghĩ bạn sẽ thấy nó đáng giá để cho trình chỉnh sửa của bạn thực hiện việc nhập. – jrockway

0

Khi tôi viết mã sẽ là OSS, tôi có mẫu bản mẫu nồi hơi đơn giản mà tôi có thể khóa trong giấy phép và URL vào văn bản giấy phép. Các tấm nồi hơi có chi tiết tác giả, và crap cứng mã hóa khác.

Đối với nhà phát triển thương mại, tôi có một đĩa nồi hơi có thông tin công ty và thông báo bản quyền chuẩn trong đó.

Tôi không giữ bất kỳ bộ xương chuẩn nào vì tôi đã tìm thấy tôi vừa mới cắt nội dung và tự thêm nội dung của mình. Hầu hết các trường hợp đều đủ khác nhau để thay đổi bộ xương thành phù hợp, miễn là bashing nó ra bằng tay.

1

Trong studio trực quan, chúng được gọi là tệp Dự án; yêu thích hiện tại của tôi là Windows Application ;-)

+0

vẫn không có cảm giác hài hước về SO - rất buồn –

1

Java

package edu.vt; 

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

public class Template 
{ 
    private Log log = LogFactory.getLog(getClass()); 

    /* Constructors 
    ***************************************************************************/ 

    public Template() 
    { 
    } 

    /* Accessors/Mutators 
    ***************************************************************************/ 

    /* Local Methods 
    ***************************************************************************/ 
} 

package testing.edu.vt; 

import edu.vt.Template; 
import junit.framework.TestCase; 
import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

public class TemplateTestCase extends TestCase 
{ 
    private final Log log = LogFactory.getLog(getClass()); 

    public TemplateTestCase(final String name) 
    { 
     super(name); 
    } 

    protected void setUp() 
    { 
    } 

    protected void tearDown() 
    { 
    } 

    public void testLifeCycle() throws Exception 
    { 
     assertTrue(true); 
    } 
} 
+0

Bạn có thực sự cần tất cả những ******* ... bình luận, đặc biệt là xem xét bạn có thể chuyển sang bất kỳ định nghĩa phương pháp với một vài tổ hợp phím? – jrockway

+0

Hầu hết mã là một ứng cử viên cho một đóng góp mã nguồn mở, nơi nó là tốt đẹp để cung cấp cho bối cảnh. Và tôi đã làm tất cả mọi người một ưu tiên và bỏ qua các khối bình luận Javadoc. Hãy nhớ rằng, đây là những tập tin bộ xương. –

1

Python là đơn giản, nhưng nó vẫn giúp nếu bạn nhập điều với tên shortcut, ví dụ:

import sys 
import numpy as np 
import pylab as pyb 
import matplotlib.pyplot as plt 
import matplotlib as mpl 

Nhưng không cần làm: nhập sk ynet.

1

Bourne Shell

#!/bin/sh 

usage() { 
cat <<EOF 
    $0 <cmd> 
cmd: 
    samplecmd 
EOF 
} 

cmd=${1} 
shift 

case ${cmd} in 
    samplecmd) 
     arg1=${arg1:-${1}} # arg list takes precedence over env var 
     if [ "x${arg1}" = "x" ] ; then 
      usage 
     fi 
     samplecmd ${arg1} 
     ;; 
    *) 
     usage 
     ;; 
esac 

Tôi muốn thực hiện kịch bản helper ít như thế này để ghi lại các lệnh tôi gõ vào vỏ.

Các vấn đề liên quan