Go Back   vb.org Archive > vBulletin Article Depository > Read An Article > General Articles
Documentation is King
filburt1
Join Date: Feb 2002
Posts: 6,144

 

Maryland, US
Show Printable Version Email this Page Subscription
filburt1 filburt1 is offline 08-19-2003, 10:00 PM

Always document your code. There are no excuses.

I strongly recommend using PHPDoc format which is essentially the same as popular Javadoc. A sample (a vBMS port I'm working on):
PHP Code:
/**
 * Displays an error if a required field in a form was missing or empty.
 *
 * Searches through $fields, an associative array of form element names mapped
 * to human-readable names, for elements that are not present in $_POST or $_GET.
 * If one or more of the elements is missing, an informative error is displayed.
 *
 * @param fields array of fields for which to check
 *
 * @return void
 */
function vbms_checkrequiredfields($fields)
{
    
$missing = array();
    
    foreach (
$fields as $name => $humanreadable)
    {
        if (empty(
$_POST[$name]) and empty($_POST[$name]))
        {
            
array_push($missing$humanreadable);
        }
    }
    
    if (!empty(
$missing))
    {
        
vbms_scrubhtml($missing);
        foreach (
$missing as $key => $value)
        {
            
$missing[$key] = "<li>$value</li>";
        }
        
$missing implode("\n"$missing);
        
        eval(
print_standard_error("error_vbms_missingfields"));
    }

Reply With Quote
  #2  
Old 04-12-2004, 02:47 AM
Mac Write Mac Write is offline
 
Join Date: Oct 2001
Posts: 11
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by filburt1
Always document your code. There are no excuses.

I strongly recommend using PHPDoc format which is essentially the same as popular Javadoc. A sample (a vBMS port I'm working on):
PHP Code:
/**
 * Displays an error if a required field in a form was missing or empty.
 *
 * Searches through $fields, an associative array of form element names mapped
 * to human-readable names, for elements that are not present in $_POST or $_GET.
 * If one or more of the elements is missing, an informative error is displayed.
 *
 * @param fields array of fields for which to check
 *
 * @return void
 */
function vbms_checkrequiredfields($fields)
{
    
$missing = array();
    
    foreach (
$fields as $name => $humanreadable)
    {
        if (empty(
$_POST[$name]) and empty($_POST[$name]))
        {
            
array_push($missing$humanreadable);
        }
    }
    
    if (!empty(
$missing))
    {
        
vbms_scrubhtml($missing);
        foreach (
$missing as $key => $value)
        {
            
$missing[$key] = "<li>$value</li>";
        }
        
$missing implode("\n"$missing);
        
        eval(
print_standard_error("error_vbms_missingfields"));
    }

What's the best way to document changes you make in Templates?

<!-- Comment -->
looks ugly. I would rather do

//comment
//comment
Reply With Quote
  #3  
Old 04-12-2004, 06:51 AM
AlexanderT's Avatar
AlexanderT AlexanderT is offline
 
Join Date: Mar 2003
Posts: 294
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

For templates, if really necessary, I would keep documentation of changes in a seperate file. <!-- Comments --> a) looks ugly, as you said yourself. b) can give a potential hacker more information than I'd like to share. c) increases load times.
Reply With Quote
  #4  
Old 04-29-2004, 07:54 PM
splooge splooge is offline
 
Join Date: Apr 2002
Posts: 2
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by filburt1
Always document your code. There are no excuses.
It was hard to write ... it should be hard to read!
Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 07:16 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.06490 seconds
  • Memory Usage 2,239KB
  • Queries Executed 19 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (2)bbcode_php
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_article
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (4)post_thanks_box
  • (4)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (4)post_thanks_postbit_info
  • (3)postbit
  • (4)postbit_onlinestatus
  • (4)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete