# General

## General

- BML pages shouldn't interface with the database much. See .

- Always use the `LJ::` functions that take an explicit database handle. Don't use the old `main::` functions that use the global $dbh.

- All files should have `<LJDEP>` edge dependency somewhere, usually at the bottom.

- Using userids (integers) for things is better than using users (strings), except in URL arguments, where pretty is more important than speed.

- In BML page, use BML blocks defined in global.look: LJUSER, P, H1, H2, STANDOUT, HR, etc...

- All HTML should be XHTML compliant.:

  - Lower case, XML compliant tags:

    `<br />` instead of `<BR>`

  - Quotes around attributes <span class="test">

  - No bare & chars ... always escape them: &amp; and <a href="foo.bml?a=1&amp;b=2">...</a>

- Use of multiple files to do one function is deprecated. There should no longer be "foo.bml" and "foo_do.bml" like there used to. That's ugly.

- Tab is a formatting command, not a character See: . There should be spaces in the files, not tab characters.

- All subs in a package need LJFUNC documentation. All tables in the database need schema documentation. All files need LJDEP documentation.