Never Say Never, or IDEs Revisited (Again)

Back in March, I mentioned our decision to implement PSR-1 and PSR-2 in our code.  It has now been a few months and while doing better, I’m still having to catch myself with little things, like curly brace placement, and I still hate using {} for controls instead of alternative syntax.

Over all, though, we have a good chunk of code cleaned up for our current project, some thanks to search/replace, and others just done whenever we touch that particularly file or page.  We also tweaked our own standards a bit more once practical application came into play, mostly just little things.

We also are bucking a little on a few aspects of PSR that we’ve mostly are being very loose with, versus being hard line on.  The biggest being the 80-120 line length limits.  It just makes no practical sense to us and isn’t really improving readability when we have 27-30” monitors we code on but are only supposed to use half the width or something.  We do the line breaks with argument lists and invocations and the like, but lines that are too long that are echoes, strings, or the like, nope.

In the same post, I reiterated that Dreamweaver was my IDE of choice and that I wouldn’t be switching.

Well, as they say, never say never… *roll credits*

I still prefer Dreamweaver in many ways, but I have transition to primarily using Zend Studio 13.5 as my IDE.  Dreamweaver works better in so many ways, except one big one that was causing a lot of issues: its tabbing system.  Even when its set to use 4 spaces as a tab, if I hit the tab key, it was still inserting a tab instead of 4 spaces.  This was really borking the indention on code, to hideous levels.

And really, that’s pretty much the main reason I ended up installing and trying Zend Studio.  Beyond that, most other stuff I find Dreamweaver does better and I still use Dreamweaver for personal projects, working with SQL and doing layout stuff, and pretty much all our other work projects except the active one because setting up just one was a pain in the arse (thanks to its “a project exists” if you don’t make a new folder bug).

My quick comparison on features that matter to me, with some shading to indicate who does it better:

Dreamweaver CS6

Zend Studio 13.5 (based on Eclipse)

Search/Replace: Can search for multiple line matches, with ignore white space options and works from any part of the interface; can also save searches for reuse

Search/Replace: Clunky and the file search doesn’t work unless you first click on the explorer; current file versus multiple files are totally separate.  Does have a nice ability to limit by file extension.

Cloaking: Has it!  Can hide certain files and folders from searching and uploading, great to avoid searching deprecated, cache folders, etc

Cloaking: Doesn’t have it.  Closest is “filters” on upload, except they have to be applied every time, resulting in a lot of crap being uploaded including Dreamweaver’s _notes folders.

Code Hinting/Completion: Adequate for most needs, though outdated for PHP 5.6 (and was for CF 9 for that matter).  Functions that auto complete include hints on arguments for when we forget which way they go.

Can also auto add end tags, with options to set when it happens.

Code Hinting/Completion: Robust and can mostly see the functions of references classes, as well as methods and variables in the current code, and Zend and PHP functions to provide excellent hinting.  When adding new use statements or doing New, also does fairly accurate mapping to show ones you probably are aiming for.

It also mostly auto adds end tags and places an end bracket at the right indent level when you add them with fairly high accuracy

Snippet/Custom Code: Love them!  Easy to set up, can assigned keyboard short cuts too, and work great.

Snippet/Custom Code: Took forever to even figure out how to do anything remotely similar (and docs suck, as usual), and the whole process is very cumbersome.  Can’t use keyboard shortcuts either, only typed short codes which are case sensitive.

Color Coding: Built-in, can customize by document type, easy to edit, and a nice amount of flexibility and options on color schemes.  No premade options to choose from beyond the defaults.  HTML tag related color options in particularly are much better.

Color Coding: Requires a plug-in to even implement, creating new schemes must be done through said plug-ins website, is less nuanced, and not as intuitive.  But has pre-built schemes which can save time by starting with “close enough” then customizing from there.

Uploading: Easy to upload/download to server via FTP, has a sync feature to make it even easier to update our dev server quickly to the newest files, easy to upload specific files, filter out some file types or use cloaking to avoid uploading undesired items, and easy keyboard shortcut for uploading the currently open file.

Upload: Bulk uploading has no keyboard shortcutting options, there is no sync option, downloading newer files (like generated classmaps, for example) is cumbersome, and the supposed keyboard shortcut to upload a file doesn’t work.  Filters only half work which is a pain.  Does have an auto upload on save, though, which is great for development

Tab Spacing: Can arguably set tab to be 4 spaces and say use spaces for indents instead of tabs, but doesn’t work properly leaving files with a mix of tabs and spaces if you try to use spaces.  The auto convert from tab to spaces is also a bit flaky and doesn’t always convert right.

Tab Spacing: You hit tab, it indents with four spaces or whatever you configured it to.  Shift tab unindents 4 spaces.  It’s only hiccups are auto indenting (turn off for pasting if you like yourself).  It doesn’t always get it right and can be a little frustrating as you then must manually delete or add the right number of steps.

Syntax Checking: Can find and point out syntax errors in most languages, including PHP, HTML, and JS.

Can “teach” it which extensions go with which languages as well.  Cannot detect CSS ones though.  HTML checking is more robust as well.

Syntax Checking: I would say the PHP syntax checking is better here, as it gives a clearer issue of the problem and has a more robust checking system.

Conversely, its HTML checking is meh, as it lacks the ability to see the classes in linked CSS files so it calls all the classes as undefined.  Like Dreamweaver, it lacks any ability to validate CSS on any level.

Visual Design: Actually has it!  So can check visuals for HTML or mostly HTML pages, easily add basic design elements like an empty table, and the like.  Decent at pulling in referenced CSS as well and unless it’s a page with very complex styling, gives a pretty good representation of what it will look like in the browser.  Oh, and can spell check your text!

Visual Design: Non-existent, at least not in the app.  May be a plug in or something for it, but I haven’t stumbled on it.  The only one I’ve seen referenced is noted to be a dead project on Github.

Code Collapse/Folding: Lets you collapse snippets of code however you want, you just highlight what you want to collapse and to id.   This allows delightful flexibility to declutter the visual landscape while working on specific parts of a page or code.  It would be nice if it had an auto collapse option to collapse all classes, functions, or other areas based on tags.

Code Collapse/Folding: Code collapse (called folding) is automatically done on opening, making it pleasant to walk down to where you need to be without a lot of visual clutter.  But no customization in folding at all, so pretty much just comments, classes, and functions can be folded for PHP.  Being able to fold controls like ifs and switches would be nice.  With HTML, JS, and CSS, pretty much nothing is foldable.

Misc. I also tend to prefer Dreamweaver’s layout overall.  The panels just work, and don’t go hoping to different locations just because I minimized it and it’s easy to arrange things just how I like them.

Setting up preferences in Dreamweaver is also easier and more intuitive, as is project management.

Misc. I regularly have issues with the search panel hoping to the top corner after being minimized even though I have it positioned at the bottom.  I also keep accidentally setting a tab to side-by-side comparison when I’m just trying to rearrange the order.

The preferences in Eclipse, and therefore Zend Studio are hideously complex, bloated, and confusing.  There are windows one, project ones, and half the time what you’re looking for won’t be in the logical place.

So, what now?  Well, I will continue using Zend Studio for work development and already have a three-year license for it.  While Dreamweaver still has more pluses, for my work needs, Zend Studio has the big one that allows for more harmonious development with my partner. I will also continue using Dreamweaver for visual stuff, working with SQL files, and for my personal projects where PSR won’t be an issue and so I can use what makes me happier.

As the year progresses, I’m sure I’ll get more used to Zend Studio and dealing with its quirks, and if nothing else if CS6 is no longer viable for some reason, it will be a tolerable alternative as I refuse to use Adobe’s subscription-based money grab.  Just too damned expensive versus buying the version straight out.  And before anyone says “prices are similar”, BS.  You pay for software once, use it for years, it is not even remotely the same as paying that same retail cost every single year.  It isn’t like the programs need to be updated every year or even when every new version comes out, at least not for most people and certainly not for me.  And yes, CS6 is a little dated on PHP, but it still does the job!  Code hinting is just a nice little bonus, it isn’t a requirement.

Lightroom 3 worked awesomely for me for years.  I only upgraded to 6 this year because I’m using a new enough camera that it came out after LS3 stopped getting Camera Raw updates.  I used Office 2003 for 10+ years because it bloody freaking worked (and notice Microsoft still lets you buy their programs, subscription is OPTIONAL!).  Nothing really new had been added to many of these long-time programs in years that are features that I suddenly realized I needed when I didn’t have them before.


Rant aside, there is my little reminder on the whole “never” thing (and yes, I realize the irony of having also just basically said I’ll never again LOL)