2009-02-02 6 views
5

Przydaje się posiadanie szkieletu lub plików szablonów, które można po prostu skopiować i wykorzystać jako podstawę dla nowego skryptu lub aplikacji.Jakie są twoje ulubione pliki szkieletów dla różnych języków?

Na przykład używam następujących (emacs z modułem auto-insert automatycznie otwiera kopię odpowiedniego pliku szkieletu podczas tworzenia nowego pliku).

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; 
} 

Prawdopodobnie jeden może zawierać kod podstawowy dla boost::program_options itp

Jakie są twoje ulubione pliki szkielet?

Odpowiedz

3

Moje Perl szablony wyglądać następująco:

Jeśli jestem otwierając moduł .pm:

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

}; 

1; 

Lub, jeśli nie na MooseX::Declare projektu:

package What::Ever; 
use Moose; 

1; 

jeśli jest to Plik .pl:

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

Odkąd używam autoinsert.el, również pytam, czy chcę użyć FindBin; jeśli tak, to:

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

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

Niezbędna kod Emacs jest w moim elisp repozytorium w http://github.com/jrockway/elisp/blob/fd5d73530a117a13ddcde92bc1c22aba1bfde1f0/_local/auto-inserts.el.

Wreszcie, myślę, że wolisz MooseX::Getopt od zwykłego Getopt. Jest to znacznie łatwiejsze do utrzymania podejście do pisania "jednorazowych" skryptów. (Kolejne kilka linii iść coś takiego:

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 

Wszystkie ważne Kod idzie w klasie, które mogą być badane jednostki, przyklejone do aplikacji internetowej, etc.)

+0

Fajnie, nie znałem MooseX. Dzięki! – Frank

3

Jedynym szkielet plik mam to dla 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} 

Oczywiście używam tego do pisania dokumentów matematycznych.

W przeciwnym razie zawsze zaczynam od zera. Nie ma języka programowania Mogę wymyślić, gdzie wymagana infrastruktura jest więcej niż można zachować w mózgu lub potrwać dłużej niż 20 sekund, aby pisać.

+0

Pomnóż liczbę plików tworzonych w ciągu całego życia przez 4 wiersze szablonu dla każdego pliku .... i myślę, że warto byłoby pozwolić redaktorowi na pisanie. – jrockway

0

Kiedy piszę kod, który będzie OSS, mam prosty szablon płyty kotła, który mogę wpisać w licencji i adres URL tekstu licencji. Płyta kotła ma dane autora i inne bzdury na sztywno zakodowane.

Dla komercyjnego dewelopera mam płytę kotła z informacjami o firmie i standardowe uwagi dotyczące praw autorskich.

Nie trzymam żadnych standardowych szkieletów, ponieważ odkryłem, że po prostu wyciąłem zawartość i dodałem własne. Większość przypadków jest na tyle różna, że ​​zmiana szkieletu na mecz trwa tak długo, jak bashowanie go ręcznie.

1

W visual studio nazywa się je plikami projektów; mój obecny faworyt okien aplikacji ;-)

+0

nadal nie ma poczucia humoru na SO - bardzo smutne –

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 
    ***************************************************************************/ 
} 

i

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

Czy naprawdę potrzebujesz tych wszystkich ******* ... komentarzy, szczególnie biorąc pod uwagę, że możesz przeskoczyć do dowolnej definicji metody za pomocą kilku naciśnięć klawiszy? – jrockway

+0

Większość kodu jest kandydatem do udziału w otwartym kodzie źródłowym, gdzie dobrze jest podać kontekst. I już zrobiłem wszystkim przysługę i pominąłem bloki komentarzy Javadoc. Pamiętaj, to są pliki szkieletów. –

1

Python jest proste, ale jeszcze pomaga, jeśli import rzeczy z nazwami skrótu, na przykład:

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

Ale po prostu nie rób: import 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 

chciałbym zrobić małego pomocnika skrypty jak to udokumentować poleceń wpisuję w powłoce.