Clean Code, Refactoring, Real world Example (programming)

Page is part of Articles in which you can submit an article

written by owen on 2016-Apr-28.

Here is a real world example of a long function that I presently use in production. The function creates/updates the meta information about a file or directory that is passed to it. The code is roughly 40 lines long. I could have chosen a longer function but for the purpose of the internet (aka social media) this seemed to be the most suitable. I am interested to see the ways this code can be "cleaned" up, code "smell"/bugs removed and made more maintainable as mentioned in JeremyBytes - Clean Code: The Refactoring Bits (video);

//save the meta information for a file to disk

function file_dir_set_meta($path, $data, $fullpath=false ){

        global $metafile_ext, $metafile_directory, $default_dir;

        $tags=''; //temp tag string
        if(isset($data['tags'])) $tags .= $data['tags'];

                $path=substr($path, strlen($default_dir), strlen($path) ); //convert absolute to relative

        if(isset($data['name'])) { //create tags from the name if available
                if( trim($data['name'])!='' ) $tags.=','.$data['name'];

        file_delete_all_tag_refs($path); //delete old tags
        tags_save( $path, $tags ); //save/update tag info

        $path = meta_filename($default_dir . $path);
        $meta_filename=$metafile_directory . $path .$metafile_ext;

        if( !is_array($data) | count($data)==0 ){
                //delete the meta file if it has no data
        } else {
                //save the data to the meta file
                unset($data['domove']); //remove garbage and empty keys
                if(array_get($data,'sort','nothing')=='') unset($data['sort']);

                if( !flock_put_contents($meta_filename, serialize($data) ) ) return false; //write file

        return true;


Sorry that there is no colouring on the code but its PHP and it should be pretty easy to read. You can post your cleaned version in the comments or where ever. There are many ways to clean code as mentioned in the Clean Code discussion but cleaning code should not be the focus of software development.

permanent link. Find similar posts in Articles.


    Comment list is empty. You should totally be the first to Post your comments on this article.